Baixe o app para aproveitar ainda mais
Prévia do material em texto
Instituto Federal do Sul de Minas Gerais Algoritmos Aula 06 - Ponteiros douglas.braz@ifsuldeminas.edu.br O que são ponteiros? • Ponteiros são variáveis que apontam para algum endereço de memória. ▫ Ponteiros fornecem meios pelos quais as funções podem modificar seus argumentos ▫ Utilizados em rotinas de alocação dinâmica ▫ O uso de ponteiros pode aumentar a eficiência de certas rotinas O que são ponteiros? • Ponteiros são variáveis que apontam para algum endereço de memória. ▫ Esse endereço é normalmente a posição de uma outra variável na memória ▫ Se uma variável contém o endereço o endereço de outra, então a primeira variável é dita para apontar para a segunda. O que são ponteiros? Variáveis Ponteiros • Se uma variável irá conter um ponteiro, ela deve ser declarada: tipo *nome; int *vet; // o conteúdo do endereço apontado // por vet é um inteiro char *p; Double *novo; Operadores de Ponteiros • Existem dois operadores principais: ▫ & - operador unário que devolve o endereço na memória de seu operando m = &x; // m recebe o endereço da variável x Se x está na posição de memória 2000 e possui o valor 100, qual valor será atribuído para m? Operadores de Ponteiros • Existem dois operadores principais: ▫ * - operador unário que devolve o conteúdo da variável localizada no endereço que o segue. a = *m; ▫ Qual valor será colocado na variável a? Observação.. • As variáveis ponteiros devem sempre apontar para o tipo de dado correto. ▫ Quando um ponteiro é declarado como sendo do tipo int, o ponteiro assume que qualquer endereço que ele contenha aponta para uma variável inteira Expressões com Ponteiros Aritmética com Ponteiros • Existem duas operações aritméticas que podem ser realizadas: adição e subtração Considere que p1 um ponteiro para um inteiro, com valor 2000 (assuma que inteiros possuem 2 bytes) Com a expressão p1++; Qual o valor do ponteiro p1? Aritmética com Ponteiros • Existem duas operações aritméticas que podem ser realizadas: adição e subtração Considere que p1 um ponteiro para um inteiro, com valor 2000 (assuma que inteiros possuem 2 bytes) E com a expressão p1--; Qual o valor do ponteiro p1? Aritmética com Ponteiros Aritmética com Ponteiros Relação com vetores e matrizes? Ponteiros e Matrizes • Há uma estreita ligação entre ponteiros e matrizes ▫ A atribuição p1 = str faz com p1 e str apontem para a primeira posição do string. Ponteiros e Matrizes • Há uma estreita ligação entre ponteiros e matrizes Exemplo Indireção Múltipla • Você pode ter um ponteiro apontando para outro ponteiro que aponta para o valor final. Exemplo Problemas com Ponteiros Próxima Aula • Funções em C • Alocação Dinâmica
Compartilhar