logo

Puntero constante en C

Punteros constantes

Un puntero constante en C no puede cambiar la dirección de la variable a la que apunta, es decir, la dirección permanecerá constante. Por lo tanto, podemos decir que si un puntero constante apunta a alguna variable, entonces no puede apuntar a ninguna otra variable.

Sintaxis del puntero constante

 *const ; 

La declaración de un puntero constante se proporciona a continuación:

 int *const ptr; 

Entendamos el puntero constante a través de un ejemplo.

carácter a int java
 #include int main() { int a=1; int b=2; int *const ptr; ptr=&a; ptr=&b; printf('Value of ptr is :%d',*ptr); return 0; } 

En el código anterior:

  • Declaramos dos variables, es decir, a y b con valores 1 y 2, respectivamente.
  • Declaramos un puntero constante.
  • Primero, asignamos la dirección de la variable 'a' al puntero 'ptr'.
  • Luego, asignamos la dirección de la variable 'b' al puntero 'ptr'.
  • Por último, intentamos imprimir el valor de la variable señalada por 'ptr'.

Producción

Puntero constante en C

En el resultado anterior, podemos observar que el código anterior produce el error 'asignación de variable de solo lectura' ptr''. Significa que el valor de la variable 'ptr' que contiene 'ptr' no se puede cambiar. En el código anterior, estamos cambiando el valor de 'ptr' de &a a &b, lo cual no es posible con punteros constantes. Por tanto, podemos decir que el puntero constante, que apunta a alguna variable, no puede apuntar a otra variable.

Puntero a constante

Un puntero a constante es un puntero a través del cual el valor de la variable a la que apunta el puntero no se puede cambiar. La dirección de estos punteros se puede cambiar, pero el valor de la variable a la que apunta el puntero no se puede cambiar.

Sintaxis de puntero a constante

 const * 

La declaración de un puntero a constante se proporciona a continuación:

 const int* ptr; 

Entendamos a través de un ejemplo.

    Primero, escribimos el código donde cambiamos el valor de un puntero.
 #include int main() { int a=100; int b=200; const int* ptr; ptr=&a; ptr=&b; printf('Value of ptr is :%u',ptr); return 0; } 

En el código anterior:

  • Declaramos dos variables, es decir, a y b con los valores 100 y 200 respectivamente.
  • Declaramos un puntero a constante.
  • Primero, asignamos la dirección de la variable 'a' al puntero 'ptr'.
  • Luego, asignamos la dirección de la variable 'b' al puntero 'ptr'.
  • Por último, intentamos imprimir el valor de 'ptr'.

Producción

Puntero constante en C

El código anterior se ejecuta correctamente y muestra el valor de 'ptr' en el resultado.

instanciando java
  • Ahora, escribimos el código en el que vamos a cambiar el valor de la variable a la que apunta el puntero.
 #include int main() { int a=100; int b=200; const int* ptr; ptr=&b; *ptr=300; printf('Value of ptr is :%d',*ptr); return 0; } 

En el código anterior:

  • Declaramos dos variables, es decir, 'a' y 'b' con los valores 100 y 200 respectivamente.
  • Declaramos un puntero a constante.
  • Asignamos la dirección de la variable 'b' al puntero 'ptr'.
  • Luego, intentamos modificar el valor de la variable 'b' mediante el puntero 'ptr'.
  • Por último, intentamos imprimir el valor de la variable a la que apunta el puntero 'ptr'.

Producción

Puntero constante en C

El código anterior muestra el error 'asignación de ubicación de solo lectura'*ptr''. Este error significa que no podemos cambiar el valor de la variable a la que apunta el puntero.

Puntero constante a una constante

Un puntero constante a una constante es un puntero, que es una combinación de los dos punteros anteriores. No puede cambiar la dirección de la variable a la que apunta ni puede cambiar el valor colocado en esta dirección.

Sintaxis

 const * const ; 

A continuación se proporciona la declaración de un puntero constante a una constante:

 const int* const ptr; 

Entendamos a través de un ejemplo.

convertir caracteres a cadenas java
 #include int main() { int a=10; int b=90; const int* const ptr=&a; *ptr=12; ptr=&b; printf('Value of ptr is :%d',*ptr); return 0; } 

En el código anterior:

  • Declaramos dos variables, es decir, 'a' y 'b' con los valores 10 y 90, respectivamente.
  • Declaramos un puntero constante a una constante y luego asignamos la dirección de 'a'.
  • Intentamos cambiar el valor de la variable 'a' mediante el puntero 'ptr'.
  • Luego intentamos asignar la dirección de la variable 'b' al puntero 'ptr'.
  • Por último, imprimimos el valor de la variable, que apunta con el puntero 'ptr'.

Producción

Puntero constante en C

El código anterior muestra el error 'asignación de ubicación de solo lectura '*ptr'' y 'asignación de variable de solo lectura 'ptr''. Por lo tanto, concluimos que el puntero constante a una constante no puede cambiar ni la dirección ni el valor que apunta este puntero.