Analise o código C a seguir.#include <stdio.h>int main...
Analise o código C a seguir.
#include <stdio.h>
int main() {
int myAge = 43;
int* ptr = &myAge;
printf("%d\n", *ptr);
return 0;
}
O valor mais provável a ser exibido pela execução do código acima
é:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é a C - 43.
Para resolver essa questão, é necessário entender o conceito de ponteiros em linguagem C. Um ponteiro é uma variável que armazena o endereço de memória de outra variável. No código apresentado, temos uma variável chamada myAge
que armazena o valor inteiro 43. Em seguida, um ponteiro chamado ptr
é declarado e inicializado para apontar para o endereço de memória da variável myAge
.
Quando usamos o operador de desreferenciação *
(asterisco) antes de um ponteiro, estamos acessando o valor da variável para a qual o ponteiro está apontando. No caso do código, a linha printf("%d\n", *ptr);
está imprimindo o valor que está no endereço de memória apontado por ptr
, que é justamente o valor da variável myAge
, ou seja, 43.
Portanto, a execução desse código resultará na impressão do valor 43 na tela, o que faz da alternativa C a correta.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Este programa em C faz o seguinte:
- : Inclui a biblioteca padrão de entrada e saída em C, que contém funções como e .
- : Define a função principal que será executada quando o programa for iniciado.
- : Declara e inicializa uma variável inteira com o valor .
- : Declara um ponteiro para inteiro e o associa ao endereço de memória de .
- : Imprime o valor apontado por (o conteúdo do endereço de ) no formato de número inteiro. Ou seja, imprime o valor .
- : Indica que o programa terminou com sucesso.
Agora, considerando as alternativas dadas:
A) 0
B) 0x7ffe5367e044
C) 43
D) null
E) undefined
A opção correta é a C) 43.
Isso porque o programa está projetado para imprimir o valor apontado por , que é o conteúdo do endereço de , e esse valor é .
Gabarito C
Fonte: ChatGPT
complementando a explicação: Para imprimir o endereço de memória para o qual o ponteiro aponta, você pode usar o formato %p no printf para imprimir o valor do ponteiro.
Dessa forma ficaria: printf("%p\n", *ptr);
&: para endereço na memória
*: para o valor atribuído do endereço na memória
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo