Linguagem C
description
Transcript of Linguagem C
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;
1000 1001 1002 1003
1
Variável Posição
a 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:
int a = 1;1000 1001 1002 1003
1
Variável Posição
a 1000
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
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
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 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]);
}
Ponteiros em Linguagem C- Exemplo
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 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]);
}
Ponteiros em Linguagem C- Exemplo Corrigido
void troca(int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}