¿Puedo asignar directamente un valor a los datos señalados por el puntero en lenguaje C? ¿Por qué?
Es posible, pero int *p; *p=7;
Porque "los datos señalados por el puntero se pueden asignar directamente", y p aquí aún no los ha señalado, por lo que no se puede asignar. Este tipo de puntero se llama "puntero flotante". no se le puede asignar un valor.
Esto funciona:
int a, *p=amp; a; *p=7;
De hecho, a es igual a 7.
Información ampliada:
Notas
También puede utilizar el operador de asignación para asignar un valor a una variable de puntero, pero asegúrese de que las dos variables de puntero estén del mismo tipo.
Supongamos que existe la siguiente definición de variable:
int i, j, *p, *q; p> Estas dos oraciones asignan las direcciones de las variables i y j a las variables de puntero pyq respectivamente;
Después de ejecutar q=p, se ejecuta esta declaración, y las variables de puntero pyq apuntan a la misma variable i, por lo que las variables de puntero p y q almacenan la dirección amp i de la variable i. La variable i no se inicializa en este momento, solo se le asigna una unidad de memoria.
Nota: q=p; y *q=*p
El primero asigna un valor a la variable del puntero q, es decir, asigna la dirección de una variable almacenada en el puntero. variable p a q. Obviamente, después de la asignación, q y p apuntan a la misma variable. ?
Este último asigna el valor señalado por p a la variable señalada por q.
Ejemplo:
p=amp;i;
q=amp;j;
i=2;
j=3;