Linguagem C
Ponteiros em 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?
– É uma área da memória do computador onde
é armazenado um valor….
• Exemplo 1:
int a = 1;
Variável Posição
a
1000
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
1
1000
1001
1002
1003
1000
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….
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;
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);
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)
Ponteiros em Linguagem C
• Exemplo:
1
int a = 1;1000
1001
1002
1003
Variável Posição
a
1000
Ponteiros em Linguagem C
1
• Exemplo:
int a = 1;1000
int *pt_a;
1001
1002
1003
Variável Posição
a
1000
pt_a
1001
Ponteiros em Linguagem C
1
• Exemplo:
int a = 1;1000
int *pt_a;
pt_a = &a;
1000
1001
1002
1003
Variável Posição
a
1000
pt_a
1001
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…
Ponteiros em Linguagem CExemplo
#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]);
}
Ponteiros em Linguagem CExemplo
void troca(int a, int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
Ponteiros em Linguagem C
• Vai funcionar?????
Ponteiros em Linguagem C
• Vai funcionar?????
• NÃOOOOOOO!!!!
Ponteiros em Linguagem C
• Vai funcionar?????
• NÃOOOOOOO!!!!
• Por quê???????
Ponteiros em Linguagem CExemplo 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]);
}
Ponteiros em Linguagem CExemplo Corrigido
void troca(int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
Download

Linguagem C