Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/12/2010, 13:16
luface2000
 
Fecha de Ingreso: octubre-2006
Mensajes: 169
Antigüedad: 18 años, 1 mes
Puntos: 2
Entender los apuntadores

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.