Análisis de puntero constante y puntero constante en C / C ++

    En C / C ++, const se encuentra a menudo para modificar punteros, lo que conduce a constantes de puntero y punteros constantes. A menudo está en mal estado en uso, y se realiza una clasificación al respecto.

1. Puntero constante

       Como su nombre lo indica, un puntero constante es esencialmente un puntero, pero está decorado con una constante constante, lo que indica que el puntero apunta a una constante (de hecho, descubriremos que también puede apuntar a una variable más adelante). El significado de señalar un vector aquí es que no puede modificar el valor de una variable a través de un puntero. Veamos el siguiente ejemplo:

int main(int argc, char *argv[])
{
	const int a = 10;
	int b = 20;
	const int* p_const;
	int *p_variable;
	p_const = &a; // const pointer can point to const or variable
	p_const = &b; // const pointer can point to const or variable
	//p_variable = &a;//[Error] error: invalid conversion from `const int*' to `int*'
	p_variable = &b;// Ok
	//*p_const =100;//[Error] error: assignment of read-only location
	*p_variable = 200;//OK, equal b =200
	b = 300;//b can be aassigned by variable b

	return 0;
}

 

       De los resultados anteriores, podemos sacar conclusiones: 1. El puntero se modifica con const, que puede apuntar a una variable de tipo const o una variable normal que se ha inicializado. 2. Un puntero modificado con const no se puede usar para modificar el valor de la variable señalada por el puntero, pero el valor de la variable (variable normal después de la inicialización) se puede modificar mediante el nombre de variable definido por la variable. 3. Un puntero modificado con const puede apuntar a una variable modificada por const o una variable que no sea modificada por const. Sin embargo, los punteros sin modificación constante solo pueden modificar variables sin modificación constante, por lo que, como parámetro formal en C / C ++, a menudo se utilizan punteros de tipo constante. Porque puede evitar modificar el valor de la variable puntiaguda.

      En resumen: el propósito de la modificación constante de las variables de puntero es evitar que los punteros cambien el valor de las variables.

2. Puntero constante

    La constante del puntero significa que la dirección almacenada en la variable del puntero es una constante y no se puede modificar. El formulario generalmente se escribe como: tipo de datos * const Puntero. El siguiente es un ejemplo para ilustrar:

int main(int argc, char *argv[])
{
	int a = 10;
	int b = 20;
	int * const const_pointer = &a; // value of const_pointer is a address
	int *pointer = &b;
	*const_pointer = 100;//ok equal a=100
	*pointer = 200; //ok equal b=200
	const_pointer = &b;//[Error] error: assignment of read-only variable `const_pointer'
	const_pointer ++;//[Error] error: assignment of read-only variable `const_pointer'
	pointer = &a;//OK, value of pointer is a address
	pointer ++;//OK, value of pointer increase by 1
		
	return 0;
}

       Se puede concluir del ejemplo anterior: 1. La dirección almacenada en la constante del puntero no se puede cambiar, por lo que no se puede asignar el puntero y otras operaciones, pero se puede cambiar la variable señalada por el puntero (no se permite la constante constante del puntero).

      En resumen: las constantes del puntero son similares a las constantes de la variable ordinaria. El valor que almacena (para los punteros es una dirección) no se puede cambiar una vez inicializado.

 

10 artículos originales publicados · Me gusta 11 · Visitas 20,000+

Supongo que te gusta

Origin blog.csdn.net/u013323018/article/details/95947432
Recomendado
Clasificación