1 ponteiros ponteiros são variáveis que guardam localizações em memória. a declaração de uma...

7
1 Ponteiros Ponteiros Ponteiros são variáveis que Ponteiros são variáveis que guardam localizações em guardam localizações em memória. A declaração de uma memória. A declaração de uma variável ponteiro variável ponteiro x x para um para um dado tipo dado tipo type type é é type *x; type *x; Essa declaração pode ser feita Essa declaração pode ser feita ao mesmo tempo que a de ao mesmo tempo que a de variáveis normais variáveis normais type *x, y, *z; type *x, y, *z; declarando duas variáveis declarando duas variáveis ponteiro (x e z) e uma variável ponteiro (x e z) e uma variável normal (y). normal (y).

Upload: internet

Post on 18-Apr-2015

105 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 1 Ponteiros Ponteiros são variáveis que guardam localizações em memória. A declaração de uma variável ponteiro x para um dado tipo type é type *x; Essa

11

PonteirosPonteiros

Ponteiros são variáveis que guardam Ponteiros são variáveis que guardam localizações em memória. A declaração localizações em memória. A declaração de uma variável ponteiro de uma variável ponteiro xx para um dado para um dado tipo tipo typetype éé

type *x;type *x;Essa declaração pode ser feita ao mesmo Essa declaração pode ser feita ao mesmo tempo que a de variáveis normaistempo que a de variáveis normais

type *x, y, *z;type *x, y, *z;declarando duas variáveis ponteiro (x e z) declarando duas variáveis ponteiro (x e z) e uma variável normal (y).e uma variável normal (y).

Page 2: 1 Ponteiros Ponteiros são variáveis que guardam localizações em memória. A declaração de uma variável ponteiro x para um dado tipo type é type *x; Essa

22

PonteirosPonteiros

Uma variável ponteiro tem, por sua vez, uma Uma variável ponteiro tem, por sua vez, uma localização em memória. Logo podemos ter localização em memória. Logo podemos ter uma variável ponteiro que guarda a uma variável ponteiro que guarda a localização em memória da anterior. Ela é localização em memória da anterior. Ela é declarada comodeclarada como

type **w;type **w;que por sua vez tem uma localização em que por sua vez tem uma localização em memória. Logo podemos ter uma variável memória. Logo podemos ter uma variável ponteiro que guarda a localização em ponteiro que guarda a localização em memória da anterior. Ela é declarada comomemória da anterior. Ela é declarada como

type ***r;type ***r;

E assim por diante E assim por diante

Page 3: 1 Ponteiros Ponteiros são variáveis que guardam localizações em memória. A declaração de uma variável ponteiro x para um dado tipo type é type *x; Essa

33

PonteirosPonteiros

Os ponteiros têm operações próprias que lhes estão associadas:Os ponteiros têm operações próprias que lhes estão associadas: & & retorna o endereço em memória de uma variável;retorna o endereço em memória de uma variável; * * retorna o conteúdo de uma zona de memória.retorna o conteúdo de uma zona de memória.

Exemplo:Exemplo:

#include <stdio.h>#include <stdio.h>

int main(){int main(){

float x=10.;float x=10.;

float *y=&x;float *y=&x; /* ponteiro para x */ /* ponteiro para x */

printf("Localizacao de x: %p;\tvalor na localizacao: %f\n", printf("Localizacao de x: %p;\tvalor na localizacao: %f\n", &x&x, *y);, *y);

return 0;return 0;

}}

O resultado é (na minha máquina):O resultado é (na minha máquina):

Localizacao de x: 0xbfbafea4;Localizacao de x: 0xbfbafea4; valor na localizacao: 10.000000valor na localizacao: 10.000000

Page 4: 1 Ponteiros Ponteiros são variáveis que guardam localizações em memória. A declaração de uma variável ponteiro x para um dado tipo type é type *x; Essa

44

Uma matriz em C é um vector de vectores ou seja, um vector de ponteiros, Uma matriz em C é um vector de vectores ou seja, um vector de ponteiros, ou seja um ponteiro para ponteiro:ou seja um ponteiro para ponteiro:

Matrizes e ponteirosMatrizes e ponteiros

Matriz: type a[l][m];

type **p=a;

Page 5: 1 Ponteiros Ponteiros são variáveis que guardam localizações em memória. A declaração de uma variável ponteiro x para um dado tipo type é type *x; Essa

55

StringsStrings

Uma string é um vector de caracteres:Uma string é um vector de caracteres:

Uma frase é um vector de strings ou seja, uma matriz de caracteresUma frase é um vector de strings ou seja, uma matriz de caracteres

‘T’ ‘F’ ‘C’ ‘O’ ‘M’ ‘\0’

Page 6: 1 Ponteiros Ponteiros são variáveis que guardam localizações em memória. A declaração de uma variável ponteiro x para um dado tipo type é type *x; Essa

66

Os argumentos de Os argumentos de mainmain

A função A função main main admite dois argumentos, um do admite dois argumentos, um do tipo inteiro e outro do tipo matriz de char. tipo inteiro e outro do tipo matriz de char. Convenciona-se chamar (por tradição, porque a Convenciona-se chamar (por tradição, porque a linguagem não obriga a isso) linguagem não obriga a isso) argc argc (de (de argument argument countercounter) e ) e argv argv (de (de argument valuesargument values). O ). O primeiro contém o número de argumentos do primeiro contém o número de argumentos do programa programa incluindo o próprio nome do incluindo o próprio nome do programa programa enquanto o segundo contém os enquanto o segundo contém os argumentos propriamente ditos como strings.argumentos propriamente ditos como strings.

Page 7: 1 Ponteiros Ponteiros são variáveis que guardam localizações em memória. A declaração de uma variável ponteiro x para um dado tipo type é type *x; Essa

77

Os argumentos de Os argumentos de mainmain

Um caso concreto: Um caso concreto: logistlogist rr 1.61.6 x0x0 0.750.75