Antes de discutir punteros constantes y punteros a objetos constantes, primero debemos aclarar qué es un puntero
puntero
Un puntero es una referencia a un objeto de datos o función; un
puntero representa la dirección y el tipo de un objeto o función ; el
puntero declarado (nombre) también es un objeto .
int var = 8848;
int* ptr = &var;
ptr es un puntero int a la variable var
Punteros constantes y punteros a objetos constantes
Puntero constante Al
definir un puntero constante, el puntero debe inicializarse porque su valor no se puede modificar posteriormente.
int var = 8848;
int var_c = 8086;
int* const ptr = &var;
*ptr = 1024; //OK
ptr = &var_c; // Error: assignment of read-only variable 'ptr'.
// prt被const修饰,是一个常量指针,是只读的
La constante en la tercera línea es seguida por el puntero ptr. Esta constante modifica el objeto de ptr, diciendo que ptr es un puntero constante.
Puntero a objeto constante
int var = 8848;
int var_c = 8086;
int const * ptr; // 与下一行是等价的
const int* ptr; // 与上一行是等价的
ptr = &var_c; // OK
*ptr = 1024; // Error
El modificador const en el ejemplo anterior es * ptr, por lo que * prt es de solo lectura. Pero ptr es un objeto puntero y ptr no es una constante.
resumen
Puntero constante (un puntero constante a un objeto), enfatizando que el puntero en sí es una constante.
Puntero a un objeto constante, enfatizando que el objeto al que apunta el puntero es una constante.
Por supuesto, también hay punteros constantes a objetos constantes (const int * const prt = & var;)