Exercícios Resolvidos de Manipulando ponteiros: ponteiros duplos, aritmética e vetores

Ver Teoria

Enunciado

Faça um programa que declare uma array de 10 elementos inteiros, e receba os valores do usuário. Depois exiba a posição, endereço de memória e valor contido em cada elemento da array.

Passo 1

E aí, galerinha!

Nessa questão vamos precisar criar uma array, receber os valores da array e imprimi-los. O detalhe é que também vamos imprimir os endereços de memória de cada posição da array.

Para acessar o endereço de memória de uma array, é só a gente usar o vetor sem os colchetes. Um vetor sem colchete funciona como endereço de memória para a primeira posição. E se a gente adicionar um, apontaremos para a segunda posição. Se adicionar dois, vamos apontar para a segunda posição, e assim por diante...

v   +   0 → e n d e r e ç o   p a r a   p r i m e i r a   a   p o s i ç ã o   v 0 v + 1 → e n d e r e ç o   p a r a   s e g u n d a   a   p o s i ç ã o   v 1 v + 2 → e n d e r e ç o   p a r a   t e r c e i r a   a   p o s i ç ã o   v 2                                                                         ⋮ v + n → a r r a y   p a r a   a   p o s i ç ã o   v [ n ]

Mas antes, vamos começar com o cabeçalho do código.

Passo 2

A primeira coisa a fazer é a gente criar uma array de inteiros. Então dentro da m a i n ( ) vamos declarar o vetor v com dimensão 10

Para preencher esse array vamos usar um loop f o r que vai executar dez iterações, começando em 0 e indo até 10 de um em um.

Em cada rodada vamos pedir pro usuário inserir um valor, e armazenamos o valor inserido na posição i do vetor.

Passo 3

Show de bola. Agora vamos pra parte mais importante da questão.

O que precisamos fazer é imprimir o índice do vetor, o endereço daquela posição, e o valor contido nessa posição. Então, pra deixar nosso programa bonitão, vamos imprimir um cabeçalho:

Beleza, agora vamos ao que interessa.

A gente precisa imprimir o índice, endereço e valor de várias posições de um vetor, então vamos usar um loop f o r para realizar uma iteração sobre esse vetor.

Dentro do loop, primeiro vamos imprimir a posição i .

Em seguida, vamos imprimir o endereço de memória. O endereço de memória da posição i pode ser obtido usando v + i .

E também vamos exibir o conteúdo do endereço v + i . Para isso é só a gente usar o operador de desreferência * , junto com os parêntesis: * ( v + 1 ) e obteremos o conteúdo armazenado no endereço.

E prontinho! Podemos terminar o programa.

Passo 4

E agora, vamos rodar e ver se funciona.

E deu tudo certo! Até mais!

Resposta