aula 189

Entendendo aritmética de ponteiros com vetor

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

Deixe um comentário

dois + 13 =

Wagner Gaspar

Capixaba de São Gabriel da Palha, Espírito Santo. Bacharel em Ciência da Computação pela Universidade Federal do Amazonas e mestre em informática pela Universidade Federal do Espírito Santo.