Você está na página 1de 2

1.

Faça um paralelo sobre o conceito de ponteiros e os vetores (estáticos)


2. Explique por que os ponteiros ajudam o desenvolvimento de aplicações que
otimizam o espaço da memória
3. Qual a relação entre os ponteiros e uma String? Explique e dê exemplos.
4. “Um vetor é essencialmente um ponteiro” – Você concorda com essa
afirmação? explique
5. Imagine que você definiu um vetor chamado “vetor” e seus elementos são
inteiros e cada um ocupa 8 bytes da sua memória. Se o endereço de vetor[0] é
85800, qual o valor da expressão vetor + 6?
6. Suponha que v é um vetor. Descreva o porquê existe uma diferença entre
escrever v[3] e v + 3
7. É possível criar um ponteiro que aponta para um ponteiro? Como explicamos
anteriormente um ponteiro é um tipo de dados que aponta para um endereço de
memória de uma variável (que possui um tipo), ou seja, quando você cria um int
*a; você cria um ponteiro para um inteiro.
8. No entanto, os ponteiros podem apontar para outros ponteiros. Para isso você
deverá colocar dois sinais de asteriscos, seria algo assim:
int **p
Agora analise o código abaixo e explique cada uma das linhas usando
comentários.
main (){
int x = 100, *p, **pp;
p = &x;
pp = &p;
printf("Valor de pp: %dn", **pp);
}
9. Vamos criar uma função agora que localiza uma letra em um vetor e retorna um
outro vetor com suas posições onde a letra foi encontrada. Por exemplo:

1 2 3 4
[v][a][n][i][a]

// output procurando a letra "a"


[1][4]

10. Vamos treinar um pouco a identificar o que significa os operadores asterisco.


Para relembrar eles podem assumir duas funções:

a)quando você quer definir um ponteiro


b)quando você quer des referenciar um ponteiro (acessar o valor da variável que
o ponteiro aponta)
c) O que significa o operador asterisco em cada um dos seguintes casos:

int *p;
printf("%d",*p);
*p = x*5;
printf("%d",*(p+1));
11. Os ponteiros são excelentes exercícios de lógica, a seguir temos uma função
main com alguns ponteiros e variáveis. Identifique o que será impresso na tela.
void main(){
int i=5, *p;
p = &i;
printf("%d, %d, %d ,%d, %d", p,(*p+2),**&p, (3**p),(**&p+4);
}

Você também pode gostar