220 likes | 474 Views
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?
E N D
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? • É 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; 1000 1001 1002 1003
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
Ponteiros em Linguagem C • Exemplo: int a = 1;1000 1001 1002 1003 int *pt_a;
Ponteiros em Linguagem C • Exemplo: int a = 1;1000 1001 1002 1003 int *pt_a; pt_a = &a;
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; }