Informática, perguntado por joaoleocadio, 1 ano atrás

Analise o seguinte trecho de programa e descreva o que acontece em cada linha.

int i=3,j=5; //
int *p, *q; //
p = &i; //
q = &j; //
p == &i; //
*p - *q; //
**&p; //
*p/(*q) + 7; //
p++; //
*(q++); //
(*p++); //

Soluções para a tarefa

Respondido por bokomoko
1
Nem todas as linhas são executáveis ok ? 

int i=3,j=5; // declarou duas variáveis inteiras, i e j
int *p, *q; // declarou duas variávies que são apontadores de inteiro
p = &i; // p agora contem o endereço da variável i
q = &j; // q agora contém o endereço da variável j
p == &i; // compara p com o endereço de i . dá verdadeiro
*p - *q; // aqui subtrai do valor apontado por p o valor apontado por q, 
// como p aponta para i e q aponta para j, vai dar 3-5 = -2
**&p; // aqui é o apontador para o apontador do endereço da variável p, no caso i
*p/(*q) + 7; // aqui teremos o valor apontado por p (que é o de i) dividido pelo valor apontado por q (que é o valor de j). Como a divisão é inteira, vai dar 0, a ela é somado 7, portanto o valor dessa expressão é 7.
p++; //  aqui  o p ai ser incrementado de um. Como i e j foram declarados nessa ordem, p vai apontar para j. Não é recomendável usar essa técnica.
*(q++); // aqui o valor de q vai ser incrementado DEPOIS. Vai retornar o valor de j e depois q vai apontar para o espaço de memória seguinte a j. Não é recomendável usar essa técnica
(*p++); // semelhante ao anterior. Vai retonar o valor apontado por p, que é i e depois p vai apontar pra j.


joaoleocadio: nem todas são executáveis, me quebrou um galhão
bokomoko: obrigado pela oportunidade de ajudá-lo.
bokomoko: Onde está estudando isso ?
Perguntas interessantes