he realizado este programa:
Código:
y lo que imprime es esto1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int main(void) 5 { 6 int a = 3; 7 int b = 1; 8 printf("El valor de a es %d\n", a); 9 int *p = &a; 10 printf("El valor de *p es %d\n", *p); 11 int *q = p; 12 printf("El nuevo valor de *q es %d\n", *q); 13 *q = b; 14 printf("El valor de *q es ahora %d\n", *q); 15 return 0; 16 }
Código:
Intentando descifrar las líneas:El valor de a es 3 El valor de *p es 3 El nuevo valor de *q es 3 El valor de *q es ahora 1
la número 9 es que el apuntador *p accede a la dirección & de memoria de a y a su valor.
No entiendo el motivo por el cual ya no podemos poner & delante de p y b en las líneas 11 y 13. Entiendo que deberíamos colocar & delante de objetos que están en memoria y b lo está. Si se hace de otra manera da problemas de compilación.
¿me podéis ayudar a entenderlo?
Gracias.