Trabalho
Ponteiros
Sumário
Ponteiros
Operadores & e *
Tipo base
Expressões
– Atribuição
– Comparação
– Aritmética
Ponteiros e matrizes (e vetores e strings)
Ponteiros
“Ponteiro é uma variável que contém um endereço da memória. Esse endereço é normalmente a posição de uma outra variável na memória.”
Fornece meios para
– Funções modificarem seus argumentos (passagem por referência)
– Implementar alocação dinâmica de memória
– Aumentar a eficiência de certas rotinas
Ponteiros (2)
Declaração
tipo *nome_da_variável; tipo é qualquer tipo de dado em C e indica o tipo
base do ponteiro, ou seja, para que tipo de dado o ponteiro deve apontar. O conteúdo armazenado na variável ponteiro é sempre um endereço, independente do tipo base. nome_da_variável é o nome da variável ponteiro para o tipo especificado.
Ponteiros char *caractere; /* cria um ponteiro que
armazenará um endereço de um char (caractere) */ int *p1, *p2; /* cria dois ponteiros que
armazenarão endereços de inteiros */
Operadores: & e *
Operador &
– É um operador unário.
– Devolve o endereço da memória do operando. int *p; int a=5, q;
...
p = &a; //ponteiro recebe o endereço da variável a
– Neste exemplo, se a variável ‘a’ ocupasse a posição de memória 1250, o valor da variável ‘p’ seria 1250.
Operadores (2)
Operador *
– É um operador unário.
– Devolve o valor da variável localizada no endereço que o segue (devolve o conteúdo apontado).
– Continuando o exemplo anterior: q = *p //q=5
As variáveis ponteiro devem sempre apontar para o tipo de dados correspondente ao seu tipo base.
Exemplo 1
#include
void main (void) { int x, y, *P1, *P2; x = 10;
P1 = &x; y = *P1 * 2; printf ("%d, %d, %d\n", x, *P1, y);
P2 = &x;
*P2 = 30; printf ("%d, %d, %d\n", x, *P1, y);
}
Tipo base
Um ponteiro contém um endereço. Este endereço aponta para exatamente um byte.
Um inteiro ocupa dois bytes de memória e um