logo

const Punter en C

Punters constants

Un punter constant a C no pot canviar l'adreça de la variable a la qual apunta, és a dir, l'adreça romandrà constant. Per tant, podem dir que si un punter constant apunta a alguna variable, aleshores no pot apuntar a cap altra variable.

Sintaxi del punter constant

 *const ; 

La declaració d'un punter constant es dóna a continuació:

 int *const ptr; 

Entenem el punter constant mitjançant un exemple.

conversió de tipus i emissió en 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 codi anterior:

  • Declarem dues variables, és a dir, a i b amb valors 1 i 2, respectivament.
  • Declarem un punter constant.
  • Primer, assignem l'adreça de la variable 'a' al punter 'ptr'.
  • A continuació, assignem l'adreça de la variable 'b' al punter 'ptr'.
  • Finalment, intentem imprimir el valor de la variable apuntada per la 'ptr'.

Sortida

const Punter en C

A la sortida anterior, podem observar que el codi anterior produeix l'error 'assignació de la variable de només lectura 'ptr'. Significa que el valor de la variable 'ptr' que té 'ptr' no es pot canviar. Al codi anterior, estem canviant el valor de 'ptr' de &a a &b, cosa que no és possible amb punters constants. Per tant, podem dir que el punter constant, que apunta a alguna variable, no pot apuntar a una altra variable.

Punter a la constant

Un punter a constant és un punter a través del qual no es pot canviar el valor de la variable que apunta el punter. L'adreça d'aquests punters es pot canviar, però el valor de la variable que apunta el punter no es pot canviar.

Sintaxi de Pointer to Constant

 const * 

La declaració d'un punter a la constant es dóna a continuació:

 const int* ptr; 

Entenem-ho a través d'un exemple.

    Primer, escrivim el codi on estem canviant el valor d'un punter
 #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 codi anterior:

  • Declarem dues variables, és a dir, a i b amb els valors 100 i 200 respectivament.
  • Declarem un punter a constant.
  • Primer, assignem l'adreça de la variable 'a' al punter 'ptr'.
  • A continuació, assignem l'adreça de la variable 'b' al punter 'ptr'.
  • Finalment, intentem imprimir el valor de 'ptr'.

Sortida

const Punter en C

El codi anterior s'executa correctament i mostra el valor de 'ptr' a la sortida.

comparació de cadenes en java
  • Ara, escrivim el codi en què estem canviant el valor de la variable a la qual apunta el punter.
 #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 codi anterior:

  • Declarem dues variables, és a dir, 'a' i 'b' amb els valors 100 i 200 respectivament.
  • Declarem un punter a constant.
  • Assignem l'adreça de la variable 'b' al punter 'ptr'.
  • Aleshores, intentem modificar el valor de la variable 'b' mitjançant el punter 'ptr'.
  • Finalment, intentem imprimir el valor de la variable que apunta el punter 'ptr'.

Sortida

const Punter en C

El codi anterior mostra l'error 'assignació de la ubicació de només lectura '*ptr'. Aquest error significa que no podem canviar el valor de la variable a la qual apunta el punter.

Constant Apuntador a una constant

Un punter constant a una constant és un punter, que és una combinació dels dos punters anteriors. No pot canviar l'adreça de la variable a la qual apunta ni pot canviar el valor col·locat en aquesta adreça.

Sintaxi

 const * const ; 

La declaració d'un punter constant a una constant es dóna a continuació:

 const int* const ptr; 

Entenem-ho a través d'un exemple.

ordena la llista de matrius en 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 codi anterior:

  • Declarem dues variables, és a dir, 'a' i 'b' amb els valors 10 i 90, respectivament.
  • Declarem un punter constant a una constant i després assignem l'adreça de 'a'.
  • Intentem canviar el valor de la variable 'a' mitjançant el punter 'ptr'.
  • Aleshores intentem assignar l'adreça de la variable 'b' al punter 'ptr'.
  • Finalment, imprimim el valor de la variable, que està assenyalat pel punter 'ptr'.

Sortida

const Punter en C

El codi anterior mostra l'error 'assignació de la ubicació de només lectura '*ptr' i 'assignació de la variable de només lectura 'ptr'. Per tant, concloem que el punter constant a una constant no pot canviar ni l'adreça ni el valor, que apunta amb aquest punter.