Buscar

A 02 - Ponteiros

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 19 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

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 6, do total de 19 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

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 9, do total de 19 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

Prévia do material em texto

Ponteiros
ESTRUTURAS DE DADOS APLICADAS
PROF. FELIPE A. PRZYSIADA
Introdução
➢Modificação de argumentos em funções;
➢Suporte a rotinas de alocação dinâmica;
➢Aumento de eficiência de certas rotinas;
ESTRUTURAS DE DADOS APLICADAS 2
Introdução
➢Um ponteiro é uma variável que contém um endereço de memória;
➢Este é normalmente a posição de uma outra variável na memória;
➢Declaração de ponteiros:
tipo *nome;
ESTRUTURAS DE DADOS APLICADAS 3
Exemplo
ESTRUTURAS DE DADOS APLICADAS 4
Exemplo
➢Neste exemplo, uma variável que está alocada na posição 1001 
possui como conteúdo, o valor 1100; este valor é o endereço de uma 
outra posição de memória, que possui uma informação armazenada, 
por exemplo, o caractere ‘A’;
➢Então neste exemplo, diz-se que a variável da posição 1001 aponta 
para a variável da posição 1100, e ambas tem o mesmo conteúdo, a 
letra ‘A’;
ESTRUTURAS DE DADOS APLICADAS 5
Operadores de ponteiros
➢& → operador unário que devolve o endereço na memória do seu 
operando;
➢* → operador unário que devolve o valor da variável localizada no 
endereço apontado;
➢& e * tem precedência maior do que todos os operadores 
matemáticos;
ESTRUTURAS DE DADOS APLICADAS 6
Cuidados
➢Ponteiros devem sempre apontar para o tipo de dados aos quais 
foram declarados;
➢Endereço de memória não tem relação com seu conteúdo;
➢Quando os ponteiros são declarados, eles são inicializados com um 
endereço não valido, portanto antes de usa-los é necessário atribuir 
um endereço;
ESTRUTURAS DE DADOS APLICADAS 7
Exemplo
ESTRUTURAS DE DADOS APLICADAS 8
Exercício
➢O que faz?
➢int x = 20, *p, *q;
➢p = &x → ?? 
➢p = *x; → ??
➢q = p; → ?? 
➢*q = *p → ??
ESTRUTURAS DE DADOS APLICADAS 9
Exercício
➢Faça um programa que atribua o valor de uma variável inteira x 
para uma variável inteira y. Use um ponteiro para fazer a atribuição 
destes valores, não use a atribuição simples;
ESTRUTURAS DE DADOS APLICADAS 10
Aritmética de ponteiros
➢Somente adição e subtração;
➢A aritmética de ponteiros depende do tipo base do ponteiro;
➢Cada vez que um ponteiro é incrementado, ele aponta para a 
posição de memória do próximo elemento do seu tipo base;
➢Cada vez que for decrementado, aponta para a posição anterior;
ESTRUTURAS DE DADOS APLICADAS 11
Aritmética de ponteiros
➢++p → Pré-incrementa o valor do ponteiro;
➢--p → Pré-decrementa o valor do ponteiro;
➢p++ → Pós-incrementa o valor do ponteiro;
➢p-- → Pós-decrementa o valor do ponteiro;
➢p+i → Soma de um ponteiro com um inteiro;
➢p-i → Subtração de um inteiro sobre o ponteiro;
ESTRUTURAS DE DADOS APLICADAS 12
Exemplo
ESTRUTURAS DE DADOS APLICADAS 13
Exercício
➢A partir do exemplo anterior verifique os endereços utilizando:
• O tipo “int”;
• O tipo “long int”;
• O tipo “double”;
• O tipo “char”;
ESTRUTURAS DE DADOS APLICADAS 14
Comparação de Ponteiros
➢Dados 2 ponteiros, pode-se compará-los sem problemas:
• int *p, *q;
• if (p < q) ....
• if (p == q) ...
• if (*p > *q) ....
ESTRUTURAS DE DADOS APLICADAS 15
Ponteiros e Vetores
➢Ponteiros e vetores estão fortemente relacionados na linguagem C;
➢O nome de um vetor é um ponteiro que aponta para a primeira 
posição do vetor;
➢Todas as operações para ponteiros podem ser executadas com um 
nome de vetor;
ESTRUTURAS DE DADOS APLICADAS 16
Exemplo
ESTRUTURAS DE DADOS APLICADAS 17
Exercício
➢Declare um vetor de 10 posições do tipo int;
➢Preencha estas posições com valores quaisquer;
➢Inicialize um ponteiro para a posição inicial do vetor.
• pointer = vetor;
➢Faça o ponteiro percorre o vetor e imprima os 10 valores;
ESTRUTURAS DE DADOS APLICADAS 18
DÚVIDAS, PERGUNTAS, QUESTIONAMENTOS
ESTRUTURAS DE DADOS APLICADAS 19

Continue navegando