Referências e Desreferências
Os ponteiros são construídos em torno de dois operadores:
- O operador de endereço
&. - O operador de desreferência
*.
Operador de Endereço
O operador de endereço, representado por &, nos permite interagir diretamente com a RAM do nosso computador. Usar & permite obter o endereço de memória real de um objeto.
Main.c
123456789101112#include <stdio.h> int main() { int x = 100; printf("Value of variable: %d\n", x); printf("Address of variable into RAM: %p\n", &x); // using reference operator `&` for getting address return 0; }
Nota
%pé o especificador de formato usado para endereços (ponteiro).
Endereços são tipicamente expressos em notação hexadecimal.
Pense no operador & como identificando o endereço da sua casa usando seu nome.
Operador de Desreferência
Por outro lado, o operador * fornece o nome do residente quando dado o endereço dele. Então, como podemos empregar esse operador se não estamos lidando diretamente com endereços? Se você tem uma expressão como &x, que retorna o endereço da variável x, aplicar o operador * a ela (*&x) fornece o valor da variável armazenada nesse endereço.
Nota
Essencialmente,
*&xé o mesmo quex.
Main.c
1234567891011121314#include <stdio.h> int main() { int x = 100; printf("Value of variable: %d\n", x); printf("Address of variable in RAM: %p\n", &x); // using reference operator `&` printf("Dereferencing address of variable: %d", *(&x)); // using dereference operator `*` return 0; }
Nota
Não confunda o operador de desreferência (
*x) com o operador de multiplicação (x*y).
Swipe to start coding
- Crie um array de inteiros com 5 elementos e preencha-o.
- Recupere o endereço do terceiro elemento.
- Incremente o endereço do terceiro elemento (ou seja, endereço + 1).
- Tente desreferenciar o endereço obtido na etapa anterior.
Solução
Obrigado pelo seu feedback!
single
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Awesome!
Completion rate improved to 2.63
Referências e Desreferências
Deslize para mostrar o menu
Os ponteiros são construídos em torno de dois operadores:
- O operador de endereço
&. - O operador de desreferência
*.
Operador de Endereço
O operador de endereço, representado por &, nos permite interagir diretamente com a RAM do nosso computador. Usar & permite obter o endereço de memória real de um objeto.
Main.c
123456789101112#include <stdio.h> int main() { int x = 100; printf("Value of variable: %d\n", x); printf("Address of variable into RAM: %p\n", &x); // using reference operator `&` for getting address return 0; }
Nota
%pé o especificador de formato usado para endereços (ponteiro).
Endereços são tipicamente expressos em notação hexadecimal.
Pense no operador & como identificando o endereço da sua casa usando seu nome.
Operador de Desreferência
Por outro lado, o operador * fornece o nome do residente quando dado o endereço dele. Então, como podemos empregar esse operador se não estamos lidando diretamente com endereços? Se você tem uma expressão como &x, que retorna o endereço da variável x, aplicar o operador * a ela (*&x) fornece o valor da variável armazenada nesse endereço.
Nota
Essencialmente,
*&xé o mesmo quex.
Main.c
1234567891011121314#include <stdio.h> int main() { int x = 100; printf("Value of variable: %d\n", x); printf("Address of variable in RAM: %p\n", &x); // using reference operator `&` printf("Dereferencing address of variable: %d", *(&x)); // using dereference operator `*` return 0; }
Nota
Não confunda o operador de desreferência (
*x) com o operador de multiplicação (x*y).
Swipe to start coding
- Crie um array de inteiros com 5 elementos e preencha-o.
- Recupere o endereço do terceiro elemento.
- Incremente o endereço do terceiro elemento (ou seja, endereço + 1).
- Tente desreferenciar o endereço obtido na etapa anterior.
Solução
Obrigado pelo seu feedback!
single