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:
& circ p==8 i ; & circ ^* p- *q; ^prime & circ * * & p ; & circ 3 - *p/(*q) + 7;

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ável i.
  • p foi atribuído para apontar para i, 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:

*p - *q

Explicação:
  • *p desreferencia o ponteiro p, ou seja, acessa o valor de i, que é 3.
  • *q desreferencia o ponteiro q, acessa o valor de j, que é 5.
  • A expressão realiza a subtração desses valores.
Cálculo:
*p - *q = 3 - 5 = -2
Resultado: -2

Passo 5

Vamos para a terceira expressão:

Explicação:
  • &p obtém o endereço do ponteiro p.
  • *(&p) desreferencia esse endereço, retornando o próprio ponteiro p.
  • *p desreferencia p, acessando o valor de i, que é 3.
Cálculo:
Resultado: 3

Passo 6

Finalmente, a quarta expressão:

3 - *p/(*q) + 7

Explicação:
  • *p desreferencia p, obtendo 3.
  • *q desreferencia q, obtendo 5.
  • A expressão realiza as operações: divisão, subtração e adição.
Cálculo:
Primeiro, a divisão inteira:
*p / *q = 3 / 5 = 0
(No C, divisão entre inteiros resulta em inteiro, descartando a parte decimal.)
Agora, substituindo na expressão:
3 - 0 + 7 = 10
Resultado: 10

Resposta

  1. p == &i1
  2. *p - *q-2
  3. **&p3
  4. 3 - *p/(*q) + 710

Exercícios relacionados