int i=3,j=5;
int *p, *q;
p=&i;
q = &j;
Determine o valor das seguintes expressões, justificando o porquê de cada resultado:
int *p, *q;
p=&i;
q = &j;
Determine o valor das seguintes expressões, justificando o porquê de cada resultado:
Passo 1
Beleza, vamos resolver esse exercício juntos! A questão trata de ponteiros em C. Precisamos entender como os ponteiros funcionam, ou seja, como eles armazenam endereços de memória e como podemos acessar os valores dessas posições. Para resolver as expressões dadas, vamos precisar saber sobre:
- Declaração e inicialização de ponteiros.
- Operadores de referência (
&) e desreferência (*). - Operações aritméticas com ponteiros.
Passo 2
Primeiro, vamos analisar as variáveis e ponteiros declarados:
int i = 3, j = 5;
int *p, *q;
p = &i;
q = &j;
Aqui,
i é um inteiro com valor 3, j é um inteiro com valor 5. p e q são ponteiros para inteiros. A linha p = &i; faz com que p aponte para o endereço de i, e q = &j; faz o mesmo para j.Passo 3
Vamos resolver a primeira expressão:
Explicação:
&ié o endereço de memória da variáveli.pfoi atribuído para apontar parai, ou seja,p = &i;.
Cálculo:
Como
p aponta para i e &i é o endereço de i, então p == &i é verdadeiro.Resultado:
1 (em C, true é representado por 1).Passo 4
Agora, a segunda expressão:
Explicação:
*pdesreferencia o ponteirop, ou seja, acessa o valor dei, que é3.*qdesreferencia o ponteiroq, acessa o valor dej, que é5.- A expressão realiza a subtração desses valores.
Cálculo:
Resultado:
-2Passo 5
Vamos para a terceira expressão:
Explicação:
&pobtém o endereço do ponteirop.*(&p)desreferencia esse endereço, retornando o próprio ponteirop.*pdesreferenciap, acessando o valor dei, que é3.
Cálculo:
Resultado:
3Passo 6
Finalmente, a quarta expressão:
Explicação:
*pdesreferenciap, obtendo3.*qdesreferenciaq, obtendo5.- A expressão realiza as operações: divisão, subtração e adição.
Cálculo:
Primeiro, a divisão inteira:
(No C, divisão entre inteiros resulta em inteiro, descartando a parte decimal.)
Agora, substituindo na expressão:
Resultado:
10Resposta
- p == &i →
1 - *p - *q →
-2 - **&p →
3 - 3 - *p/(*q) + 7 →
10