Вы находитесь на странице: 1из 15

MC102 - Algoritmos e programa c ao de computadores

Aula 24: Apontadores e Aloca c ao Din amica de Mem oria

Vari avel
A uma vari avel x como a declarada abaixo: int x = (100); tem a ela associados: um nome (x); um endere co de mem oria ou refer encia (0xbfd267c4); um valor (100).

O operador address-of (&)


Retorna o endere co de uma vari avel: int x = 100; printf("valor de x = %d\n", x); printf("endere co de x = 0x%x\n", (unsigned int) &x); Veja o c odigo x.c

Apontador
Um apontador e uma vari avel que pode armazenar endere cos de outras vari aveis. int x; int *ap_x; /* apontador para inteiros */ ap_x = &x; /* ap_x aponta para x */ Veja o c odigo ap x.c

Declara c ao de apontadores em C
Utilizamos o operador un ario * int char float double *ap_int; *ap_char; *ap_float; *ap_double;

Veja os c odigos apontadores.c e ap tabela.c

Declara c ao de apontadores em C
Para declarar v arios apontadores em uma u nica linha: int *ap1, *ap_2, *ap_3; A declara c ao abaixo declara quantos inteiros e quantos apontadores para inteiro? int *ap1, ap_ou_int1, ap_ou_int2;

Fazendo acesso aos valores das vari aveis referenciadas


int x; int ap_x = &x; *ap_x = 3; *ap x pode ser usado em qualquer contexto que x seria. Veja o c odigo valores.c

Apontadores para estruturas


struct ponto { double x; double y; }; typedef struct ponto Ponto; \* ... *\ Ponto *ap_p; ap_p->x = 4.0; ap_p->y = 5.0; Veja o c odigo ap struct.c

Passagem de par ametros por valor


void nao_troca(int x, int y) { int aux; aux = x; x = y; y = aux; } Apenas uma c opia de x e y e passada para a fun c ao.

Passagem de apontadores
void troca(int *ap_x, int *ap_y) { int aux; aux = *ap_x; *ap_x = *ap_y; *ap_y = aux; } Veja o c odigo: troca.c

Passagem de estruturas como par ametros


Seguem a mesma regra de vari aveis simples; Veja o c odigo troca struct.c

Apontadores e Vetores
C permite manipula c ao de endere cos via Indexa c ao (v[4]) ou Aritm etica de endere cos (*(ap+4)) Veja os c odigos ap e vetores.c e cadeias.c

Vetores de apontadores
int *vet_ap[5]; char *vet_cadeias[5]; S ao vetores semelhantes aos vetores de tipos simples Veja o c odigo vet cadeias.c

Aloca c ao din amica de mem oria


fun c ao malloc()
oria e Aloca um bloco consecutivo de bytes na mem retorna o endere co deste bloco; Permite escrever programas mais ex veis. Veja os c odigos malloc.c e nao eh infinita.c

Libera c ao de mem oria


fun c ao free()
oria; Libera o uso de um bloco de mem Futuras chamadas ` a fun c ao malloc poder ao usar estes bytes. Veja o c odigo free.c

Вам также может понравиться