Hola,
he realizado este programa:
Código:
1 #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 }
y lo que imprime es esto
Código:
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
Intentando descifrar las líneas:
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.