Criar um Site Grátis Fantástico
Ponteiro de Vetor
Ponteiro de Vetor

 Ponteiros são variáveis que guardam o endereço de memória de outra variável. Veremos agora, como se aplica este recurso em vetores.

Recapitulando o que são vetores: variáveis de endereço continuo na memória. Ou seja, enquanto uma variável do tipo int ocupa, por exemplo, um bloco de memória, um vetor de 5 posições do tipo int ocupa 5 blocos de memória.

Para acessarmos cada item de um vetor usamos os índices que ficam entre colchetes ([]).

Há duas formas de trabalhar com ponteiros para vetor.

1. Usar índices no ponteiro como se ele fosse um vetor:

ponteiro = vetor;
ponteiro[indice1] = qualquer valor para ser gravado nesse índice;
ponteiro[indiceN] = qualquer valor para ser gravado nesse índice;

Preste atenção no seguinte detalhe. Apesar de ser ponteiro, ao atribuirmos um valor ao índice não usamos o sinal de dereferência (*).

2. Usar o que chamamos de aritmética de ponteiros.

Aritmética de ponteiros consiste em modificar o valor do ponteiro para ele indicar o próximo endereço de memória do vetor.

Exemplificando, seria algo como:

ponteiro = endereço do índice 0 do vetor;
*(ponteiro+indice1) = qualquer valor para ser gravado nesse índice;
*(ponteiro+indiceN) = qualquer valor para ser gravado nesse índice;

Quando somamos um número ao ponteiro, o que estamos fazendo é, na verdade, somar o número necessário de bytes para o próximo endereço.

Ex.: Se tivermos um ponteiro para um vetor de inteiro, quando formos calcular o terceiro espaço faremos *(ponteiro+3). Internamente será calculado o seguinte -> ponteiro + 3 × o tamanho de int (4 bytes). Então, 3 × 4 = 12 bytes.

ponteiro = 0x00001100;
ponteiro + 12 bytes;
novo ponteiro = 0x00001100C;

Apesar de ser uma conta simples, não precisamos nos preocupar com isso. Porque o próprio sistema cuida de executar este cálculo.