A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

PONTEIROS PROGRAMAÇÃO I. Ponteiros Programação I 2 Ponteiros são variáveis que armazenam endereços de memória int main (void) { int a; int *p; p = &a;

Apresentações semelhantes


Apresentação em tema: "PONTEIROS PROGRAMAÇÃO I. Ponteiros Programação I 2 Ponteiros são variáveis que armazenam endereços de memória int main (void) { int a; int *p; p = &a;"— Transcrição da apresentação:

1 PONTEIROS PROGRAMAÇÃO I

2 Ponteiros Programação I 2 Ponteiros são variáveis que armazenam endereços de memória int main (void) { int a; int *p; p = &a; *p = 2; return 0; } VariávelEndereçoConteúdo a0? p4? 8 12 p : variável ponteiro para int

3 Ponteiros Programação I 3 int main (void){ int a; int *p; p = &a; *p = 2; return 0; } VariávelEndereçoConteúdo a0? p

4 Ponteiros Programação I 4 int main (void){ int a; int *p; p = &a; *p = 2; return 0; } VariávelEndereçoConteúdo a02 p

5 Operadores usados com ponteiros Programação I 5 Operador unário & (endereço de) Operador unário * (conteúdo de)

6 Operadores usados com ponteiros Programação I 6 int main (void){ int a; int *p; p = &a; *p = 2; return 0; } int main (void){ int a; int *p = *a; *p = 2; return 0; }

7 Cuidados ao usar ponteiros Programação I 7 int main ( void ) { int a, b, *p; a = 2; *p = 3; b = a + (*p); printf(" %d ", b); return 0; } 3 é escrito em uma área de memória desconhecida

8 Aritmética de Ponteiros Programação I 8 Se p é um ponteiro para uma variável, então a expressão p+1 gera o endereço necessário para acessar uma variável de mesmo tipo, adjacente.

9 Aritmética de Ponteiros Programação I 9 int main (void){ int v[2]; int *p; p = v; p = p + 1; *p = 5; return 0; } VariávelEndereçoConteúdo v[0]0? v[1]4? p8? 12

10 Aritmética de Ponteiros Programação I 10 int main (void){ int v[2]; int *p; p = v; p = p + 1; *p = 5; return 0; } VariávelEndereçoConteúdo v[0]0? v[1]4? p80 12

11 Aritmética de Ponteiros Programação I 11 int main (void){ int v[2]; int *p; p = v; p = p + 1; *p = 5; return 0; } VariávelEndereçoConteúdo v[0]0? v[1]4? p84 12

12 Aritmética de Ponteiros Programação I 12 int main (void){ int v[2]; int *p; p = v; p = p + 1; *p = 5; return 0; } VariávelEndereçoConteúdo v[0]0? v[1]45 p84 12

13 Relação entre vetores e ponteiros Programação I 13 Um ponteiro é uma variável capaz de armazenar um endereço de memória qualquer. O nome de um vetor é um endereço fixo de memória.

14 Relação entre vetores e ponteiros Programação I 14 para um vetor a é equivalente a[i]

15 Relação entre vetores e ponteiros Programação I 15 #include int main (void) { int i; float v[6] = {2.3, 5.4, 1.0, 7.6, 8.8, 3.9}; for (i=0; i<6; i++) { printf("%f", v[i]); } return 0; } #include int main (void) { int i; float v[6] = {2.3, 5.4, 1.0, 7.6, 8.8, 3.9}; for (i=0; i<6; i++) { printf("%f", *(v + i); } return 0; }

16 Passagem de Vetores e Ponteiros para Funções Programação I 16 Podemos passar vetores e ponteiros como parâmetros para funções. Isso permite que dentro de uma função, sejam alteradas variáveis de outras funções.

17 Passagem de Vetores e Ponteiros para Funções Programação I 17 v possui o mesmo endereço de vet int main (void) { int i; float vet[6] = {2.3, 5.4, 1.0, 7.6, 8.8, 3.9}; float m; m = calculaMedia(vet, 6); zerar(vet, 6); return 0; } float calculaMedia(float v[], int n) { float m = 0.0f; int i; for(i = 0 ; i < n ; i++) { m += v[i]; } m /= n; return m; } void zerar(float v[], int n) { int i; for(i = 0 ; i < n ; i++) { v[i] = 0; }

18 Passagem de Vetores e Ponteiros para Funções Programação I 18 #include void troca(int* pa, int* pb) { int tmp=*pb; *pb=*pa; *pa=tmp; } int main (void) { int a=10, b=20; troca(&a,&b); }


Carregar ppt "PONTEIROS PROGRAMAÇÃO I. Ponteiros Programação I 2 Ponteiros são variáveis que armazenam endereços de memória int main (void) { int a; int *p; p = &a;"

Apresentações semelhantes


Anúncios Google