logo

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.

java char para string

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:

Unix x Windows
 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.

comparação de string c#