ponteiro const em C

ponteiro const em C

Ponteiros constantes

Um ponteiro constante em C não pode alterar o endereço da variável para a qual está apontando, ou seja, o endereço permanecerá constante. Portanto, podemos dizer que se um ponteiro constante aponta para alguma variável, então ele não pode apontar para nenhuma outra variável.

Sintaxe do ponteiro constante

 *const ;  

A declaração de um ponteiro constante é fornecida abaixo:

 int *const ptr;  

Vamos entender o ponteiro constante através de um exemplo.

 #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; }  

No código acima:

  • Declaramos duas variáveis, ou seja, aeb com valores 1 e 2, respectivamente.
  • Declaramos um ponteiro constante.
  • Primeiro, atribuímos o endereço da variável 'a' ao ponteiro 'ptr'.
  • Em seguida, atribuímos o endereço da variável 'b' ao ponteiro 'ptr'.
  • Por último, tentamos imprimir o valor da variável apontada pelo 'ptr'.

Saída

ponteiro const em C

Na saída acima, podemos observar que o código acima produz o erro 'atribuição de variável somente leitura'ptr''. Isso significa que o valor da variável 'ptr' que 'ptr' contém não pode ser alterado. No código acima, estamos alterando o valor de 'ptr' de &a para &b, o que não é possível com ponteiros constantes. Portanto, podemos dizer que o ponteiro constante, que aponta para alguma variável, não pode apontar para outra variável.

Ponteiro para Constante

Um ponteiro para constante é um ponteiro através do qual o valor da variável que o ponteiro aponta não pode ser alterado. O endereço desses ponteiros pode ser alterado, mas o valor da variável que o ponteiro aponta não pode ser alterado.

Sintaxe do ponteiro para constante

 const *  

A declaração de um ponteiro para constante é fornecida abaixo:

 const int* ptr;  

Vamos entender através de um exemplo.

    Primeiro, escrevemos o código onde alteramos o valor de um ponteiro
 #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; }  

No código acima:

  • Declaramos duas variáveis, ou seja, aeb com os valores 100 e 200 respectivamente.
  • Declaramos um ponteiro para constante.
  • Primeiro, atribuímos o endereço da variável 'a' ao ponteiro 'ptr'.
  • Em seguida, atribuímos o endereço da variável 'b' ao ponteiro 'ptr'.
  • Por último, tentamos imprimir o valor de 'ptr'.

Saída

ponteiro const em C

O código acima é executado com sucesso e mostra o valor de ‘ptr’ na saída.

  • Agora, escrevemos o código no qual alteramos o valor da variável para a qual o ponteiro aponta.
 #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; }  

No código acima:

  • Declaramos duas variáveis, ou seja, 'a' e 'b' com os valores 100 e 200 respectivamente.
  • Declaramos um ponteiro para constante.
  • Atribuímos o endereço da variável 'b' ao ponteiro 'ptr'.
  • Em seguida, tentamos modificar o valor da variável ‘b’ através do ponteiro ‘ptr’.
  • Por último, tentamos imprimir o valor da variável que é apontada pelo ponteiro 'ptr'.

Saída

ponteiro const em C

O código acima mostra o erro 'atribuição de local somente leitura '*ptr''. Este erro significa que não podemos alterar o valor da variável para a qual o ponteiro está apontando.

Ponteiro Constante para uma Constante

Um ponteiro constante para uma constante é um ponteiro, que é uma combinação dos dois ponteiros acima. Não pode alterar o endereço da variável para a qual está apontando nem pode alterar o valor colocado neste endereço.

Sintaxe

 const * const ;  

A declaração para um ponteiro constante para uma constante é fornecida abaixo:

 const int* const ptr;  

Vamos entender através de um exemplo.

 #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; }  

No código acima:

  • Declaramos duas variáveis, ou seja, 'a' e 'b' com os valores 10 e 90, respectivamente.
  • Declaramos um ponteiro constante para uma constante e então atribuímos o endereço de 'a'.
  • Tentamos alterar o valor da variável ‘a’ através do ponteiro ‘ptr’.
  • Então tentamos atribuir o endereço da variável 'b' ao ponteiro 'ptr'.
  • Por último, imprimimos o valor da variável, que é apontada pelo ponteiro 'ptr'.

Saída

ponteiro const em C

O código acima mostra o erro 'atribuição de local somente leitura '*ptr'' e 'atribuição de variável somente leitura 'ptr''. Portanto, concluímos que o ponteiro constante para uma constante não pode alterar o endereço nem o valor apontado por este ponteiro.