TRABALHO ESTRUTURA DE DADOS
Qual é o valor das seguintes expressões ?
a) p == &i;
b) *p *q
c) **&p
d) 3* *p/(*q)+7 Resolução:
a)
#include <stdio.h>
#include <stdlib.h> int main(){ int i=3,j=5; int *p, *q; p = &i; q = &j; p == &i; printf("%d", p); return 0;
}
p == &i; =
2686740
b)
#include <stdio.h>
#include <stdlib.h> int main(){ int i=3,j=5; int *p, *q, b; p = &i; q = &j; b = *p *q; printf("%d\n", b); return 0;
}
*p *q = 2
c)
#include <stdio.h>
#include <stdlib.h> int main(){ int i=3,j=5, c; int *p, *q; p = &i; q = &j; c = **&p; printf("%d\n", c); return 0;
}
**&p = 3 d)
#include <stdio.h>
#include <stdlib.h> int main(){ int i=3,j=5, d; int *p, *q; p = &i; q = &j; d = 3* *p/(*q)+7; printf("%d\n", d); return 0;
}
3* *p/(*q)+7 = 6 2)Qual será a saída deste programa supondo que i ocupa o endereço 4094 na memória? main() { int i=5, *p; p = &i; printf(“%x %d %d %d %d \n”, p,*p+2,**&p,3**p,**&p+4);
}
R:
#include <stdio.h>
#include <stdlib.h> main() { int i=5, *p; p = &i; printf("%x %d %d %d %d \n", p,*p+2,**&p,3**p,**&p+4);
system("pause"); return 0;
}
Saida é:
592747c4 7 5 15 9 3) Se i e j são variáveis inteiras e p e q ponteiros para int, quais das seguintes expressões de atribuição são ilegais?
a) p = &i; CORRETA
b) *q = &j; CORRETA
c) p = &*&i; INCORRETA
d) i = (*&)j; INCORRETA
e) i = *&j; INCORRETA
f) i = *&*&j; INCORRETA
g) q = *p; CORRETA
h) i = (*p)++ + *q CORRETA
4)
#include <stdio.h>
#include <stdlib.h> int main() { int valor; int*p1; float temp; float *p2; char aux; char *nome = "Algoritmos"; char *p3; int idade; int vetor[3]; int*p4; int*p5;
/* (a) */ valor = 10; p1 = &valor;
*p1 = 20; printf("(a) %d \n",