& a es un número que es un valor r: puede almacenarlo en algún lugar si lo desea en una variable que habrá declarado o asignado, de tipo int *.
A saber:
int a = 42;
&a; /* this does not store the address of a because you've not assigned the value to a variable */
int **aptr = &a; /* aptr is on the stack */
int **aptr2 = (int*)malloc(sizeof(int*));
aptr2 = &a; /* aptr2 is in the heap */
& (& a) no es la sintaxis legal. Si quieres un puntero a un puntero a un int:
int b = 39;
int *bptr = &b;
int **ptr2bptr = &bptr;
Usted tiene que construir los niveles de indirección.
Con lo anterior, a continuación, puede hacer esto si quieren:
printf("%d\n", *aptr);
printf("%d\n", *aptr2);
printf("%d\n", *bptr);
printf("%d\n", **ptr_to_bptr);
La producción de salida de:
42
42
39
39
Si usted está realmente en busca de cómo se almacenan los punteros, echa un vistazo a esta respuesta a: http://stackoverflow.com/questions/991075/does-a-pointer-also-have-any-address-or-memory-allocation/991152#991152 –
Aquí también: http://stackoverflow.com/questions/96285/in- ci-can-grasp-punteros-y-clases/98525 # 98525 –