aula 195

Como realizar multiplicações com ponteiros de ponteiros?

Dando continuidade ao estudo de ponteiros na linguagem C, veremos nesta aula como realizar multiplicações com ponteiros de ponteiros.

4) Considere a seguinte declaração: int A, *B, **C, ***D.
Escreva um programa que leia a variável A e calcule e exiba o dobro, o triplo e o quádruplo desse valor utilizando apenas os ponteiros B, C e D. O ponteiro B deve ser usada para calcular o dobro, C o triplo e D o quádruplo.

O primeiro detalhe importante que deve ser observado aqui é a definição das variáveis. B é um ponteiro pra inteiro, logo, a variável B apenas pode receber o endereço da variável A. A variável C é um ponteiro pra ponteiro, ou seja, ela apenas pode receber o endereço da variável B. Por fim, a variável D é um ponteiro pra ponteiro pra ponteiro, assim, ela apenas pode receber o endereço da variável C.

Dessa forma, após a leitura do valor para a variável A, temos as seguintes atribuições:

    B = &A;
    C = &B;
    D = &C;

Perceba que na prática todas as variáveis apontam para a variável A:
– D aponta para C;
– C aponta para B;
– e B aponta para A.

O passo final é acessar o valor apontado por cada ponteiro e calcular a multiplicação pedida pelo exercício. Os detalhes que devem ser observados aqui é a quantidade de asteriscos ( * ) em cada ponteiro e o cuidado de não juntar a operação de multiplicação com os asteriscos do ponteiro.

    printf("O dobro de %d e: %d\n", A, 2 * *B);
    printf("O triplo de %d e: %d\n", A, 3 * **C);
    printf("O quadruplo de %d e: %d\n", A, 4 * ***D);

Código de exemplo completo em C

/*
            Aula 195: Exercício 4

            Código escrito por Wagner Gaspar
            Maior de 2021

            4) Considere a seguinte declaração: int A, *B, **C, ***D. Escreva um programa que leia a variável A e calcule e exiba o dobro, o triplo e o quádruplo desse valor utilizando apenas os ponteiros B, C e D. O ponteiro B deve ser usada para calcular o dobro, C o triplo e D o quádruplo.


int main(){

    int A, *B, **C, ***D;

    printf("Digite um valor: ");
    scanf("%d", &A);

    B = &A;
    C = &B;
    D = &C;

    printf("O dobro de %d e: %d\n", A, 2 * *B);
    printf("O triplo de %d e: %d\n", A, 3 * **C);
    printf("O quadruplo de %d e: %d\n", A, 4 * ***D);

    return 0;
}

Deixe um comentário

dezesseis − 6 =

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.