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