logo

Ponteiro de desreferência C

Como já sabemos disso 'o que é um ponteiro' , um ponteiro é uma variável que armazena o endereço de outra variável. O operador de desreferência também é conhecido como operador indireto, representado por (*). Quando o operador indireto (*) é usado com a variável ponteiro, ele é conhecido como desreferenciando um ponteiro. Quando desreferenciamos um ponteiro, o valor da variável apontada por este ponteiro será retornado.

Por que usamos o ponteiro de desreferenciação?

A desreferência de um ponteiro é usada pelos seguintes motivos:

  • Ele pode ser usado para acessar ou manipular os dados armazenados no local da memória apontado pelo ponteiro.
  • Qualquer operação aplicada ao ponteiro desreferenciado afetará diretamente o valor da variável para a qual ele aponta.

Vamos observar as etapas a seguir para desreferenciar um ponteiro.

  • Primeiro, declaramos a variável inteira para a qual o ponteiro aponta.
 int x =9; 
  • Agora, declaramos a variável ponteiro inteiro.
 int *ptr; 
  • Após a declaração de uma variável ponteiro inteira, armazenamos o endereço da variável 'x' na variável ponteiro 'ptr'.
 ptr=&x; 
  • Podemos alterar o valor da variável 'x' desreferenciando um ponteiro 'ptr' conforme mostrado abaixo:
 *ptr =8; 

A linha acima altera o valor da variável 'x' de 9 para 8 porque 'ptr' aponta para a localização 'x' e desreferenciação de 'ptr', ou seja, *ptr=8 atualizará o valor de x.

Vamos combinar todas as etapas acima:

 #include int main() { int x=9; int *ptr; ptr=&x; *ptr=8; printf('value of x is : %d', x); return 0;} 

Saída

Ponteiro de desreferência C

Vamos considerar outro exemplo.

 #include int main() { int x=4; int y; int *ptr; ptr=&x; y=*ptr; *ptr=5; printf('The value of x is : %d',x); printf('
 The value of y is : %d',y); return 0; } 

No código acima:

  • Declaramos duas variáveis ​​'x' e 'y' onde 'x' contém um valor '4'.
  • Declaramos uma variável ponteiro 'ptr'.
  • Após a declaração de uma variável ponteiro, atribuímos o endereço da variável 'x' ao ponteiro 'ptr'.
  • Como sabemos que 'ptr' contém o endereço da variável 'x', então '*ptr' é igual a 'x'.
  • Atribuímos o valor de 'x' a 'y' com a ajuda da variável 'ptr', ou seja, y = * PTR em vez de usar a variável 'x'.

Nota: Segundo nós, se alterarmos o valor de 'x', então o valor de 'y' também será alterado, pois o ponteiro 'ptr' contém o endereço da variável 'x'. Mas isso não acontece, pois 'y' está armazenando a cópia local do valor '5'.

Saída

Ponteiro de desreferência C

Vamos considerar outro cenário.

 #include int main() { int a=90; int *ptr1,*ptr2; ptr1=&a; ptr2=&a; *ptr1=7; *ptr2=6; printf('The value of a is : %d',a); return 0; } 

No código acima:

função estática em java
  • Primeiro, declaramos uma variável 'a'.
  • Então declaramos dois ponteiros, ou seja, ptr1 e ptr2.
  • Ambos os ponteiros contêm o endereço da variável 'a'.
  • Atribuímos o valor '7' ao *ptr1 e '6' ao *ptr2. O valor final de 'a' seria '6'.

Nota: Se tivermos mais de um ponteiro apontando para o mesmo local, a alteração feita por um ponteiro será igual a de outro ponteiro.

Saída

Ponteiro de desreferência C