Red de conocimiento informático - Computadora portátil - Problema de asignación de punteros en lenguaje C

Problema de asignación de punteros en lenguaje C

Preste atención a la inicialización cuando utilice punteros, por ejemplo:

int *p;

p es un puntero, la dirección es desconocida, si la asigna directamente

*p=a; La compilación puede realizarse de esta manera, pero se generará una advertencia. La dirección de p se asigna aleatoriamente, por lo que asignar valores a direcciones desconocidas es muy peligroso y puede sobrescribir algunos. datos importantes, así que evite este peligro al definir punteros, preste atención a la inicialización, es decir, la asignación.

Puedes usar int *p=&a;

o int *p;

p=&a;

y luego operar en p

Hay un error.

Presta atención a las mayúsculas, y

int a=9;

int *p;

p=&a;//this El puntero apunta a un

*p=8;

Así es.

Información ampliada:

Asignación de punteros

int *p;

int a;

int b [1];

p = &a;?

p = b;?

Asignación de puntero, el operando izquierdo de "=" puede ser *p , también puede ser p.

Cuando el operando izquierdo de "=" es *p, los datos almacenados en la dirección señalada por p cambian

Cuando el operando izquierdo de "=" es p; lo que cambia es la dirección que señala la p.

El nombre de la variable b de la matriz representa la primera dirección de la matriz, por lo que p=b también es correcto

Asignación de puntero del mismo tipo:

int val1 = 18,val2 = 19;

int *p1,*p2;

p1 = &val1;

p2 = &val2;

p1 = p2; //Nota, p1 apunta a val2, no a val1

Observaciones: Inicialización y asignación de cadenas y punteros

Inicialización:

char *cp = "abcdefg"; //Este proceso de inicialización apunta el puntero cp a la primera dirección de la cadena en lugar de pasar el valor de la cadena. Porque, en lenguaje C, no existe un mecanismo general para procesar una cadena

Asignación:

cp = "abcdefg";

*cp="abcdefg" ;//¡error! A la constante de cadena se le pasa su primera dirección y el valor de la cadena no se puede cambiar mediante *cp, porque la cadena es una constante y simplemente apunta el puntero a la constante de cadena.