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