Linguagem C

19
Linguagem C Ponteiros em Linguagem C

description

Ponteiros em Linguagem C. Linguagem C. Ponteiros em Linguagem C. O Que é uma variável? É uma área da memória do computador onde é armazenado um valor…. Exemplo 1: int a = 1;. Ponteiros em Linguagem C. O Que é uma variável? - PowerPoint PPT Presentation

Transcript of Linguagem C

Page 1: Linguagem C

Linguagem C

Ponteiros em Linguagem C

Page 2: Linguagem C

Ponteiros em Linguagem C

• O Que é uma variável?– É uma área da memória do computador onde

é armazenado um valor….

• Exemplo 1:

int a = 1;

Page 3: Linguagem C

Ponteiros em Linguagem C

• O Que é uma variável?– É uma área da memória do computador onde

é armazenado um valor….

• Exemplo 1:

int a = 1;

Variável Posição

a 1000

Page 4: Linguagem C

Ponteiros em Linguagem C

• O Que é uma variável?– É uma área da memória do computador onde

é armazenado um valor….

• Exemplo 1:

int a = 1;

1000 1001 1002 1003

1

Variável Posição

a 1000

Page 5: Linguagem C

Ponteiros em Linguagem C

• O Que É Um Ponteiro?– É uma variável que armazena o endereço na

memória do computador onde está outra variável….

Page 6: Linguagem C

Ponteiros em Linguagem C

• O Que É Um Ponteiro?– É uma variável que armazena o endereço na

memória do computador onde está outra variável….

• Operadores relacionados a Ponteiros:*(asterisco): informa que uma variável irá armazenar

o endereço de outra variável; ou:

informa ao computador que vc deseja o valor que está no endereço armazenado;

&(e comercial): retorna o endereço de uma variável;

Page 7: Linguagem C

Ponteiros em Linguagem C

• Operadores relacionados a Ponteiros:*(asterisco): informa que uma variável irá armazenar o

endereço de outra variável; ou:

informa ao computador que vc deseja o valor que está no endereço armazenado;

&(e comercial): retorna o endereço de uma variável;

• Exemplo 2:int a = 1;int *pt_a;pt_a = &a;printf(“%d”, *pt_a);

Page 8: Linguagem C

Ponteiros em Linguagem C

• Repetindo:• operador *

– declara-se com * • int *x

– acessa-se (alterar, modificar, ler) também com * • *x = 10; // atribui o valor 10 ao local apontado pelo ponteiro ‘x’• printf(“%d”, *x); // imprime o valor armazenado no local

apontado por ‘x’– observação: strings e vetores funcionam de forma diferente:

um vetor ou string é um ponteiro por definição

• operador &– acessa (alterar, modificar, ler) o endereço de uma

variável (que é um ponteiro)

Page 9: Linguagem C

Ponteiros em Linguagem C

• Exemplo:

int a = 1;1000 1001 1002 1003

1

Variável Posição

a 1000

Page 10: Linguagem C

Ponteiros em Linguagem C

• Exemplo:

int a = 1;1000 1001 1002 1003

int *pt_a;

1

Variável Posição

a 1000

pt_a 1001

Page 11: Linguagem C

Ponteiros em Linguagem C

• Exemplo:

int a = 1;1000 1001 1002 1003

int *pt_a;

pt_a = &a;

1 1000

Variável Posição

a 1000

pt_a 1001

Page 12: Linguagem C

Ponteiros em Linguagem C

• Onde usar isto???• Funções!• Alocação Dinâmica

– Não sei o tamanho que o vetor precisa ter….!– Não sei o tamanho que cada string precisa

ter…– Não sei o tamanho que a matriz precisa ter…

Page 13: Linguagem C

Ponteiros em Linguagem C- Exemplo

#include <stdio.h>

int A[10]; int i,j,n;

int main()

{

for(i=0;i<n;i++) scanf(“%d”,&A[i]);

for(j=0;j<n;j++)

for(i=0;i<n-1;i++)

if(A[i]>A[i+1])

troca(A[i],A[i+1]);

for(i=0;i<n;i++) printf (“%d\n”,A[i]);

}

Page 14: Linguagem C

Ponteiros em Linguagem C- Exemplo

void troca(int a, int b)

{

int temp;

temp = a;

a = b;

b = temp;

}

Page 15: Linguagem C

Ponteiros em Linguagem C

• Vai funcionar?????

Page 16: Linguagem C

Ponteiros em Linguagem C

• Vai funcionar?????• NÃOOOOOOO!!!!

Page 17: Linguagem C

Ponteiros em Linguagem C

• Vai funcionar?????• NÃOOOOOOO!!!!• Por quê???????

Page 18: Linguagem C

Ponteiros em Linguagem C- Exemplo Corrigido

#include <stdio.h>

int A[10]; int i,j,n;

int main()

{

for(i=0;i<n;i++) scanf(“%d”,&A[i]);

for(j=0;j<n;j++)

for(i=0;i<n-1;i++)

if(A[i]>A[i+1])

troca(&A[i],&A[i+1]);

for(i=0;i<n;i++) printf (“%d\n”,A[i]);

}

Page 19: Linguagem C

Ponteiros em Linguagem C- Exemplo Corrigido

void troca(int *a, int *b)

{

int temp;

temp = *a;

*a = *b;

*b = temp;

}