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

Ver Teoria

Enunciado

Suponha que os elementos do vetor v são do tipo i n t e cada i n t ocupa 8   b y t e s no seu computador. Se o endereço de v [ 0 ] é 55000 , qual o valor da expressão v   +   3

Passo 1

E aí pessoal, tudo bem? Vamos para mais uma questão sobre manipulação de ponteiros.

Pra resolver essa questão a gente precisa ter em mente duas coisas: a relação entre ponteiros e vetores e também o funcionamento da aritmética de ponteiros.

Precisamos lembrar que um vetor pode ser tratado como um ponteiro! Quando utilizamos um vetor sem os colchetes nós temos um ponteiro para a primeira posição do vetor. Seguindo essa lógica, quando fazemos uma soma do tipo v + 3 podemos tratar isso como uma aritmética de ponteiros.

Sobre a aritmética de ponteiros precisamos lembrar que: quando somamos um ponteiro com um inteiro, a soma é proporcional a quantidade de bytes do tipo do ponteiro. Então, no nosso caso, somar 1 ao ponteiro é equivalente a somar 8 no endereço de memória.

Passo 2

Certo, então agora vamos efetuar os nossos cálculos.

O endereço de memória de v [ 0 ] pode ser obtido simplesmente chamando o vetor sem os colchetes assim: v → 5500 . Porém, se a gente quiser obter este endereço de memória através de aritmética de ponteiros podemos expressar da seguinte maneira: v + 0 → 5500 .

De forma análoga, para obter o endereço de memória de v [ 1 ] podemos fazer v + 1 . Porém, ao somar 1 unidade ao ponteiro, nós adicionamos 8   b y t e s ao endereço de memória:

v + 1 → 55000 + 8 v + 1 → 55008

E podemos ampliar este raciocínio para todas as outras posições do vetor. Ao adicionar 2 unidades ao ponteiro, é equivalente a adicionar 8   b y t e s ao endereço de memória

v + 2 → 55000 + 16 v + 2 → 550 16

E por fim, adicionando 3 unidades ao ponteiro, o resultado é adicionar 24   b y t e s no endereço de memória.

v + 3 → 55000 + 24 v + 3 → 550 24

Resposta

O endereço de v + 3 é 55024