Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Referências e desrefêrencias | Ponteiros
Noções Básicas de C
course content

Conteúdo do Curso

Noções Básicas de C

Noções Básicas de C

1. Introdução
2. Dados
3. Operadores
4. Instruções de controle
5. Funções
6. Ponteiros

Referências e desrefêrencias

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. Usando &, você pode obter o endereço de memória real de um objeto.

c

Main

copy
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 normalmente expressos em notação hexadecimal.

Pense no operador & como se estivesse identificando o endereço da sua casa usando o seu nome.

Operador de desreferência

Inversamente, o operador * fornece o nome do residente quando lhe é dado o seu endereço. Então, como podemos utilizar 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) te dará o valor da variável armazenado naquele endereço.

Nota

Essencialmente, *&x é o mesmo que x.

c

Main

copy
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("Dereferenssing address of varialbe: %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).

Tarefa

  1. Crie um array de inteiros com 5 elementos e preencha-o.
  2. Recupere o endereço do terceiro elemento.
  3. Incremente o endereço do terceiro elemento (ou seja, endereço + 1).
  4. Tente desreferenciar o endereço obtido no passo anterior.

Tarefa

  1. Crie um array de inteiros com 5 elementos e preencha-o.
  2. Recupere o endereço do terceiro elemento.
  3. Incremente o endereço do terceiro elemento (ou seja, endereço + 1).
  4. Tente desreferenciar o endereço obtido no passo anterior.
Mude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo

Tudo estava claro?

Seção 6. Capítulo 2
toggle bottom row

Referências e desrefêrencias

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. Usando &, você pode obter o endereço de memória real de um objeto.

c

Main

copy
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 normalmente expressos em notação hexadecimal.

Pense no operador & como se estivesse identificando o endereço da sua casa usando o seu nome.

Operador de desreferência

Inversamente, o operador * fornece o nome do residente quando lhe é dado o seu endereço. Então, como podemos utilizar 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) te dará o valor da variável armazenado naquele endereço.

Nota

Essencialmente, *&x é o mesmo que x.

c

Main

copy
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("Dereferenssing address of varialbe: %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).

Tarefa

  1. Crie um array de inteiros com 5 elementos e preencha-o.
  2. Recupere o endereço do terceiro elemento.
  3. Incremente o endereço do terceiro elemento (ou seja, endereço + 1).
  4. Tente desreferenciar o endereço obtido no passo anterior.

Tarefa

  1. Crie um array de inteiros com 5 elementos e preencha-o.
  2. Recupere o endereço do terceiro elemento.
  3. Incremente o endereço do terceiro elemento (ou seja, endereço + 1).
  4. Tente desreferenciar o endereço obtido no passo anterior.
Mude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo

Tudo estava claro?

Seção 6. Capítulo 2
toggle bottom row

Referências e desrefêrencias

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. Usando &, você pode obter o endereço de memória real de um objeto.

c

Main

copy
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 normalmente expressos em notação hexadecimal.

Pense no operador & como se estivesse identificando o endereço da sua casa usando o seu nome.

Operador de desreferência

Inversamente, o operador * fornece o nome do residente quando lhe é dado o seu endereço. Então, como podemos utilizar 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) te dará o valor da variável armazenado naquele endereço.

Nota

Essencialmente, *&x é o mesmo que x.

c

Main

copy
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("Dereferenssing address of varialbe: %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).

Tarefa

  1. Crie um array de inteiros com 5 elementos e preencha-o.
  2. Recupere o endereço do terceiro elemento.
  3. Incremente o endereço do terceiro elemento (ou seja, endereço + 1).
  4. Tente desreferenciar o endereço obtido no passo anterior.

Tarefa

  1. Crie um array de inteiros com 5 elementos e preencha-o.
  2. Recupere o endereço do terceiro elemento.
  3. Incremente o endereço do terceiro elemento (ou seja, endereço + 1).
  4. Tente desreferenciar o endereço obtido no passo anterior.
Mude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo

Tudo estava claro?

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. Usando &, você pode obter o endereço de memória real de um objeto.

c

Main

copy
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 normalmente expressos em notação hexadecimal.

Pense no operador & como se estivesse identificando o endereço da sua casa usando o seu nome.

Operador de desreferência

Inversamente, o operador * fornece o nome do residente quando lhe é dado o seu endereço. Então, como podemos utilizar 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) te dará o valor da variável armazenado naquele endereço.

Nota

Essencialmente, *&x é o mesmo que x.

c

Main

copy
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("Dereferenssing address of varialbe: %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).

Tarefa

  1. Crie um array de inteiros com 5 elementos e preencha-o.
  2. Recupere o endereço do terceiro elemento.
  3. Incremente o endereço do terceiro elemento (ou seja, endereço + 1).
  4. Tente desreferenciar o endereço obtido no passo anterior.
Mude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo
Seção 6. Capítulo 2
Mude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo
We're sorry to hear that something went wrong. What happened?
some-alt