Ponteiross - Aula Tads_IFSP

709 palavras 3 páginas
Ponteiros

Ponteiros (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

Relacionados