Buscar

Lista de Exercícios de Ponteiros e Registros

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 5 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Lista de Exercícios de Ponteiros
Quais das seguintes instruções é correta para declarar um ponteiro?
int _ptr x
int *ptr
*int ptr
*x
Qual é a maneira correta de referenciar o conteúdo de ch, assumindo que o endereço de ch foi atribuido ao ponteiro indica? 
*indica;     
int *indica     
ch
*ch
Na expressão float *fptr, o que é do tipo float ? 
A variável fptr                              
O endereço de fptr
A variável apontada por ftpr     
Nenhuma das anteriores
Assumindo que o endereço da variável var foi atribuído a um ponteiro pointvar, escreva uma expressão que não usa var e divida var por 10. 
*pointvar / 10
Assumindo que o endereço de vox foi atribuido a um ponteiro variável invox, quais das seguintes expressões são verdadeiras? 
vox ==&invox     
vox==*invox     
invox==*vox         
invox==&Vox
Qual é a instrução que deve ser adicionada ao programa seguinte para que ele trabalhe corretamente?
main( )
{ 
int j, *ptrj; 
*ptrj = 3; 
} 
Assumindo que queremos ler o valor de x e o endereço de x foi atribuído a ptrx, a instrução seguinte é correta? Justique.
scanf("%d",*ptrx); 
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? 
p==&i                  
*p-*q                  
**&p                  
3*-*p/(*q)+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(" %u %d %d %d %d \n", p, *p+2, **&p, 3**p, **&p+4); 
} 
Se i e j são variáveis inteiras e p e q ponteiros para int, quais das seguintes expressões de atribuições são ilegais ?
p= &i;         
*q= &j;          
p= &*&i;          
i= (*&)j 
i = *&j         
i= *&*&j;          
q= &p;          
i= (*p)++ + *q
O seguinte programa tem um erro de conceito. Qual é ?
main( ) 
{ 
int *p= 987; 
printf("Numero = %d \n", *p); 
 } 
Implemente um programa em C que defina um registro capaz de armazenar as informações de nome, CPF, identidade, endereço, nome do pai, nome da mãe e salário de um funcionário de uma empresa. Em seguida preencha todos estes dados em uma variável registro deste tipo.
Implemente um programa em C que defina o mesmo registro da questão 1 para um grupo de 5 funcionários (vetor de registros). Em seguida, preencha todos os dados para os cinco funcionários.
Defina qual o registro para a estrutura definida abaixo:
	2.3
	´A´
	45
	-387
	-56.5
	“XYQ”
	0
 A	 B	 C	D	 E	 F	 G
	Onde, A, B, C, D, E, F e G são os campos do registro;
Qual é o resultado do seguinte programa?
#include <conio.h>
#include <stdio.h>
void main(){
	float vet[5] = {1.1,2.2,3.3,4.4,5.5};
	float *f;
	int i;
	f = vet;
	printf("contador/valor/valor/endereco/endereco");
	for(i = 0 ; i <= 4 ; i++){
		printf("\ni = %d",i);
		printf(" vet[%d] = %.1f",i, vet[i]);
		printf(" *(f + %d) = %.1f",i, *(f+i));
		printf(" &vet[%d] = %X",i, &vet[i]);
		printf(" (f + %d) = %X",i, f+i);
	}
}
Assumindo que pulo[] é um vetor do tipo int, quais das seguintes expressões referenciam o valor do terceiro elemento do vetor?
*(pulo + 2)
*(pulo + 4)
pulo + 4
pulo + 2
Supor a declaração: int mat[4], *p, x; Quais expressões são válidas? Justifique.
a. p = mat + 1;	
b. p = mat++;
c. p = ++mat;	
d. x = (*mat)++;
O que fazem os seguintes programas?
	
#include <stdlib.h>
#include <stdio.h>
void main(){
int vet[] = {4,9,13};
int i;
for(i=0;i<3;i++){
printf("%d ",*(vet+i));
}
}
	
#include <stdlib.h>
#include <stdio.h>
void main(){
int vet[] = {4,9,13};
int i;
for(i=0;i<3;i++){
printf("%x ",vet+i);
}
}
	
#include <stdlib.h>
#include <stdio.h>
void main(){
int vet[] = {4,9,13};
int i;
for(i=0;i<3;i++){
printf("%x ",vet+i);
}
}
O que fazem os seguintes programas?
	#include <stdlib.h>
#include <stdio.h>
void main() {
	int vet[] = {4,9,12};
	int i,*ptr;
	ptr = vet;
	for(i = 0 ; i < 3 ; i++) {
	 printf("%d ",*ptr++);
	}
}
	#include <stdlib.h>
#include <stdio.h>
void main(){
	int vet[] = {4,9,12};
	int i,*ptr;
	ptr = vet;
	for(i = 0 ; i < 3 ; i++) {
	 printf("%d ",(*ptr)++);
	}
}
	(a)
	(b)
Seja vet um vetor de 4 elementos: TIPO vet[4]. Supor que depois da declaração, vet esteja armazenado no endereço de memória 4092 (ou seja, o endereço de vet[0]). Supor também que na máquina usada uma variável do tipo char ocupa 1 byte, do tipo int ocupa 2 bytes, do tipo float ocupa 4 bytes e do tipo double ocupa 8 bytes. Qual o valor de vet+1, vet+2 e vet+3 se:
vet for declarado como char?
vet for declarado como int?
vet for declarado como float?
vet for declarado como double?

Outros materiais