Ponteiros (estrutura De Dados)
Artigo: Ponteiros (estrutura De Dados). Pesquise 862.000+ trabalhos acadêmicosPor: Lunast • 14/3/2015 • 1.213 Palavras (5 Páginas) • 1.065 Visualizações
1. Qual será a saída deste programa, supondo que i ocupa o endereço 4094 na memória?
#include <stdio.h>
int main(){
int i=5, *p;
p = &i;
printf(“%p - %d - %d\n”, p, *p+2, 3*(*p));
}
2. Fazer um programa que altere o valor armazenado em uma variável através do ponteiro que aponta para a mesma, seguindo as seguintes premissas:
* A variável numero (tipo inteiro) irá armazenar o valor 35;
* O ponteiro se chama ptr;
* Logo no início, apresentar a mensagem (utilizando apenas a variável do tipo ponteiro): “O ponteiro ptr armazena o endereço ___ que, ‘\n’ por sua vez, armazena o valor ___. ‘\n”
* Após a troca do valor, apresentar (utilizando apenas a variável do tipo ponteiro): “Agora, o ponteiro ptr armazena o endereço ___ que, ‘\n’por sua vez, armazena o valor ___. ‘\n’”
3. Desenvolver um programa que possua a função troca(), que irá realizar a troca dos valores de duas variáveis. Essa função recebe os endereços das variáveis passadas pela função main(), armazenando-os nos ponteiros p1 e p2. Dentro da função, trocam-se os conteúdos dos endereços apontados. Em seguida, retornando-se à função chamadora deve ser apresentado o resultado final.
4. Escreva uma função que imprima o endereço de uma variável.
5. Um ponteiro é:
a) o endereço de uma variável;
b) uma variável que armazena endereços;
c) o valor de uma variável;
d) um indicador da próxima variável acessada.
6. Seja o seguinte trecho de programa:
int i=3,j=5;
int *p, *q;
p = &i;
q = &j;
Qual é o valor das seguintes expressões ?
a) p == &i; b) *p - *q c) **&p d) 3* - *p/(*q)+7
7. 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);
}
8. Se i e j são variáveis inteiras e p e q ponteiros para int, quais das seguintes expressões e atribuição são ilegais?
a) p = &i; b) *q = &j; c) p = &*&i; d) i = (*&)j; e) i = *&j; f) i = *&*&j; g) q = *p; h) i = (*p)++ + *q
9. 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);
}
Alocação dinâmica
1. Qual serão as saídas do seguinte programa?
#include <stdio.h>
int main() {
int valor, *p1, idade, *p4, *p5, vetor[3];
float temp, *p2;
char aux, *p3;
char *nome = "Algoritmos";
/* (a) */
valor = 10;
p1 = &valor;
*p1 = 20;
printf("(a) %d \n", valor);
/* (b) */
temp = 26.5;
p2 = &temp;
*p2 = 29.0;
printf("(b) %.1f \n", temp);
/* (c) */
p3 = &nome[0];
aux = *p3;
printf("(c) %c \n", aux);
/* (d) */
p3 = &nome[4];
aux = *p3;
printf("(d) %c \n", aux);
/* (e) */
p3 = nome;
printf("(e) %c \n", *p3);
/* (f) */
p3 = p3 + 4;
printf("(f) %c \n", *p3);
/* (g) */
p3--;
printf("(g) %c \n", *p3);
/* <h> */
vetor[0] = 31;
vetor[1] = 45;
vetor[2] = 27;
p4 = vetor;
idade = *p4;
printf("(h) %d \n", idade);
/* (i) */
p5 = p4 + 1;
idade = *p5;
printf("(i) %d \n", idade);
...