Baixe o app para aproveitar ainda mais
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
Compartilhar