Red de conocimientos sobre prescripción popular - Colección de remedios caseros - ¿Qué son los punteros constantes y las constantes de puntero?

¿Qué son los punteros constantes y las constantes de puntero?

En primer lugar, la palabra clave para definir constantes es const. En realidad, hay un error que todos consideran correcto por defecto. Es decir, la constante definida por const es esencialmente una variable, porque la memoria asignará una dirección para guardarla. Si la constante definida por define es una constante real, esta memoria no se asignará. ¿Cómo podría ser diferente? Entonces, todos los internos usarán const para convertirlas en variables de solo lectura. Solo lectura significa que solo pueden leer su valor, pero no volver a leerlo. Recuerde~

Esta pregunta es difícil de formular, pero fácil de formular. Al leer la respuesta a continuación, recuerde que un puntero es una variable. Tiene su propio espacio de memoria, que almacena la dirección de la variable a la que apunta. Recuerda que el valor de un puntero es la dirección.

1.puntero const significa que el valor del puntero no se puede cambiar, es decir, el valor del puntero es una constante, suponiendo.

int * const p; aquí viene el punto: const modifica P, y P es un puntero. Sabemos que los punteros también son variables y la memoria también les asignará espacio. La dirección se coloca dentro, por lo que de acuerdo con las propiedades de la palabra clave const, podemos saber que el valor en la variable de puntero P no se puede cambiar. ¿Qué hay en la variable de puntero? Sí, es la dirección. Debido a que no se puede cambiar, debemos inicializarlo cuando lo definimos, p.e.

int i = 20

Constante p = ampI;

Haga lo siguiente:

p = ampI2 no se puede utilizar porque p El valor no se puede cambiar, es decir, no puede apuntar a otras direcciones.

* p = 100; correcto, porque lo que cambia no es el valor de p, sino el valor de la variable a la que apunta.

2. Constantes de puntero

forman int const * p; tenga en cuenta que las posiciones de la palabra clave const e int se pueden intercambiar, lo que no lo afecta. Tenga en cuenta la posición de * y const.

Punto clave: const modifica *p (este es el punto clave, sabemos que hay una dirección en P, por lo que *p son los datos en la dirección a la que apunta, que es un valor). no una dirección. ¿Qué significa eso? ¿Recuerdas lo que significa constante? Si se define una variable de solo lectura, su valor no se puede cambiar. Entonces el significado de esta oración es: el valor de *p no se puede cambiar:

Suponga la siguiente afirmación

int I 1 = 30;

int i2 = 40

Constante int * pi = ampI 1;

Pi = ampI2 /*Tenga en cuenta que pi se puede reasignar a una nueva ubicación de memoria en cualquier momento.

Dirección*/

i2 = 80/*Piénselo: ¿se puede usar *pi = 80 en su lugar? ¡Por supuesto que no! */

printf("d\n ", * pi); /*La salida es 80 */

Análisis semántico:

¿Lo viste? ? El valor de pi se puede modificar. Es decir, puede redirigir a otra dirección.

Sí, pero el valor de i2 no se puede modificar con *pi (esta frase es la clave). I 1 e I 2 no se pueden cambiar con *p, lo que significa que el valor de la variable a la que apunta se puede cambiar, pero no se puede cambiar con *p = 40.

Me tomó mucho tiempo comprender este problema y el autor lo pensará nuevamente. Puedes experimentar en la máquina, eso sería aún más sorprendente ~ ¡Deseo que progreses!