Entendendo aritmética de ponteiros com vetor, é este o tema da aula de hoje do nosso curso de programação com a linguagem C.
Como já vimos nas aulas anteriores, um vetor é um conjunto de posições na memória de forma sequencial, uma após a outra. Isso significa que os endereços de memória também são sequenciais.
Como nós sabemos o primeiro endereço de memória do nosso vetor (o nome do vetor), nós podemos percorrer todo o vetor fazendo somas.
Com o nome do nosso vetor nós conseguimos acessar a primeira posição do nosso vetor. Com nome + 1 nós conseguimos acessar a segunda posição do vetor. Com nome + 2 nós conseguimos acessar a terceira posição do vetor. E assim por diante.
Perceba que esta soma gera um resultado um pouco diferente da soma que conhecemos na matemática. Ao somar 1 em um endereço de memória o resultado é o endereço de memória seguinte, ou seja, avançamos uma posição no vetor.
Sabendo disso, agora podemos imprimir um vetor por meio de aritmética de ponteiros, como feito a seguir:
void imprimir(int vet[], int tam){ int i; for(i = 0; i < tam; i++) printf("%d ", *(vet + i)); printf("\n"); }
Perceba que primeiro precisamos fazer a soma, por isso o par de parênteses, para apenas depois obter o conteúdo daquela região de memória. Caso não seja colocado os parênteses o resultado será completamente diferente uma vez que será obtido o valor da primeira posição do vetor ( *vet ) e depois será feito a soma, neste caso a operação matemática como conhecemos.
Código de exemplo completo em C com aritmética de ponteiros
*/ Aula 189: Aritmética de ponteiros com vetor. Código escrito por Wagner Gaspar Maior de 2021 */ void imprimir(int vet[], int tam){ int i; for(i = 0; i < tam; i++) printf("%d ", *(vet + i)); printf("\n"); } int main(){ int vet[10] = {45,89,68,25,17,76,34,29,57,44}; imprimir(vet, 10); return 0; }