Download - Linguagem C
![Page 1: Linguagem C](https://reader036.vdocuments.pub/reader036/viewer/2022082819/568138cf550346895da08add/html5/thumbnails/1.jpg)
Linguagem C
Ponteiros em Linguagem C
![Page 2: Linguagem C](https://reader036.vdocuments.pub/reader036/viewer/2022082819/568138cf550346895da08add/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022082819/568138cf550346895da08add/html5/thumbnails/3.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022082819/568138cf550346895da08add/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022082819/568138cf550346895da08add/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022082819/568138cf550346895da08add/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022082819/568138cf550346895da08add/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022082819/568138cf550346895da08add/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022082819/568138cf550346895da08add/html5/thumbnails/9.jpg)
Ponteiros em Linguagem C
• Exemplo:
int a = 1;1000 1001 1002 1003
1
Variável Posição
a 1000
![Page 10: Linguagem C](https://reader036.vdocuments.pub/reader036/viewer/2022082819/568138cf550346895da08add/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022082819/568138cf550346895da08add/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022082819/568138cf550346895da08add/html5/thumbnails/12.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022082819/568138cf550346895da08add/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022082819/568138cf550346895da08add/html5/thumbnails/14.jpg)
Ponteiros em Linguagem C- Exemplo
void troca(int a, int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
![Page 15: Linguagem C](https://reader036.vdocuments.pub/reader036/viewer/2022082819/568138cf550346895da08add/html5/thumbnails/15.jpg)
Ponteiros em Linguagem C
• Vai funcionar?????
![Page 16: Linguagem C](https://reader036.vdocuments.pub/reader036/viewer/2022082819/568138cf550346895da08add/html5/thumbnails/16.jpg)
Ponteiros em Linguagem C
• Vai funcionar?????• NÃOOOOOOO!!!!
![Page 17: Linguagem C](https://reader036.vdocuments.pub/reader036/viewer/2022082819/568138cf550346895da08add/html5/thumbnails/17.jpg)
Ponteiros em Linguagem C
• Vai funcionar?????• NÃOOOOOOO!!!!• Por quê???????
![Page 18: Linguagem C](https://reader036.vdocuments.pub/reader036/viewer/2022082819/568138cf550346895da08add/html5/thumbnails/18.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022082819/568138cf550346895da08add/html5/thumbnails/19.jpg)
Ponteiros em Linguagem C- Exemplo Corrigido
void troca(int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}