Diferencia entre `a` y` & a` en C ++ donde `a` es una matriz
Estoy confundido acerca de la salida del siguiente código.
#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
int a[] = {1,2,3};
cout << a << " " << &a << endl;
cout << sizeof(a) << " " << sizeof(&a) << endl;
return 0;
}
La salida es
0xbfcd3ae4 0xbfcd3ae4
12 4
Como puedea
y&a
imprimir la misma expresión pero tienen diferentes tamaños? Siempre pensé que para cualquier matriz, su nombre siempre tiene el valor = dirección del primer byte.
también&a
no debería tener sentido, ya que uno no puede tener una dirección (obtenida con el operador &) en una dirección (el valor de a). Sin embargo, el código proporciona una salida e infact 'a == & a' de acuerdo con la salida.
Del mismo modo, ¿por qué es la salida desizeof(a) = 12
(¿cuál es la memoria total ocupada) por la matriz?a
siendo un "puntero" en sí mismo sizeof (a) = 4 bytes (en mi Ubuntu 11.04 de 32 bits)
Obviamente hay algún error que estoy teniendo. ¿Podría alguien arreglar esto por mí?