Considere o programa a seguir, elaborado na linguagem ANSI ...
#include <stdio.h>
int* pa, a;
int main() { a = 10; pa = &a; a = 8; printf("%d", a); printf(" %d", *pa); }
Assinale a alternativa CORRETA sobre a saída (output) obtida, ao se executar o programa:
A alternativa correta é:
8 8
A variável a é inicializada com o valor 10. A variável pa é apontada para a variável a. O valor da variável a é alterado para 8. A função printf() é chamada para imprimir os valores das variáveis a e *pa. Como a variável pa aponta para a variável a, a função printf() imprime os valores 8 e 8.
duas variaveis, um ponteiro recebendo o endereço de uma outra variável
Alternativa Correta: A - 8 8
Para entender a saída deste programa em linguagem ANSI C, é importante conhecer alguns conceitos fundamentais:
- Variáveis: armazenam dados que podem ser alterados durante a execução do programa.
- Ponteiros: variáveis que armazenam endereços de memória de outras variáveis.
- Atribuição e acesso a variáveis: ao atribuir um valor a uma variável e depois alterá-lo, ao acessar essa variável, o valor obtido será o último atribuído.
Com base nesses conceitos, vamos destrinchar o código:
- A variável int a é inicializada com o valor 10.
- O ponteiro int* pa é inicializado para apontar para o endereço de memória da variável a.
- O valor da variável a é alterado para 8.
- O comando printf imprime o valor atual da variável a, que é 8.
- O comando printf seguinte imprime o valor apontado pelo ponteiro pa, que é o valor atual da variável a (já que pa aponta para a), que também é 8.
Portanto, a saída correta do programa é 8 8, pois ambos, a variável a e o conteúdo apontado pelo ponteiro pa (que é a), têm o valor 8 no momento em que são impressos.