Ponteiross - Aula Tads_IFSP
709 palavras
3 páginas
PonteirosPonteiros (ou apontadores)
Uma variável que contém o endereço de memória de outra variável
–
em geral, um inteiro positivo
Recurso poderoso
Torna o código mais eficiente
–
Compilação mais rápida
Ponteiros
Na linguagem C é usado para:
Passagem de parâmetros em funções
(passagem por referência)
Alternativa para acessar vetores e matrizes Estruturas de dados dinâmicas
Declaração
Sintaxe: tipo *identificador; /*o operador * indica q a variável é um ponteiro*/
Exemplo: int *p; /*p é um ponteiro para um inteiro*/
Cuidado!
Um ponteiro deve sempre apontar para um local válido antes de ser utilizado
Exemplo: int main ()
{
int i=10, *pi;
*pi = 20; /*erro ! pi nao tem endereco valido*/
}
Cuidado!
Um ponteiro deve sempre apontar para um local válido antes de ser utilizado
Exemplo: int main ()
{
int i=10, *pi; pi = &i; /*pi contem o endereco de i*/
*pi = 20; /*i passa a ser 20 */
}
Atribuição
Exemplo: int num; int *p;
Endereços
Variáveis num 100
1024
1024
1034
p = #
Atribuição pode ser:
– direta: num = 100;
– indireta: *p = 100;
p
Operadores & e *
Operador &: operador de endereço, que quando aplicado sobre uma variável retorna o seu endereço
Operador *: operador indireto, que obtém o conteúdo do endereço apontado por uma variável Exemplos
// ... int a = 10; int *b; printf(“Conteudo de a: %d\n", a); printf(“Endereco de a: %d\n", &a); b = &a; printf(“Endereco de b: %d\n", b); printf(“Conteudo de b: %d\n", *b);
*b = 15; // atribuicao indireta printf(“Conteudo de a: %d\n", a); printf(“Conteudo de b: %d\n", *b); printf(“Conteudo de a: %d\n", *(&a));
// ...
Exemplo
Ponteiros
São variáveis tipadas:
(int *) ≠ (float *) ≠ (char *)
Exemplo: int main()
{ int *ip, x; float *fp, z; ip = &x; /* OK */ fp = &z; /* OK */ ip = &z; /* erro */ fp = &x; /* erro