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
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.
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
Perguntas interessantes
Química,
9 meses atrás
Física,
9 meses atrás
Geografia,
9 meses atrás
Biologia,
1 ano atrás
Matemática,
1 ano atrás
Geografia,
1 ano atrás
Português,
1 ano atrás
Matemática,
1 ano atrás