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;
}
