Ponteiros
Resenha: Ponteiros. Pesquise 862.000+ trabalhos acadêmicosPor: kduilha • 19/11/2012 • Resenha • 510 Palavras (3 Páginas) • 625 Visualizações
Ponteiros
Um ponteiro é um tipo especial de variável que armazena endereços. Um ponteiro pode ter o valor especia NULL, que não é o endereço de lugar algum. A constante NULL está definida no arquivo-interface stdlib e seu valor é 0 na maioria dos computadores.
Se um ponteiro p armazena o endereço de uma variável i, podemos dizer "p aponta para i" ou "p é o endereço de i" (querendo dizer "o ponteiro p aponta para i" no primeiro caso e "o valor de p é o endereço de i" no segundo). Se um ponteiro p tem valor diferente de NULLentão , *p é o valor do objeto apontado por p. (Não confunda esse uso de "*" com o operador de multiplicação!) Por exemplo, se i é uma variável e pé igual a &i então dizer "*p" é o mesmo que dizer "i".
Figura esquerda: um ponteiro p, armazenado no endereço 90001, contém o endereço de um inteiro. Figura direita: representação esquemática da situação.
Há vários tipos de ponteiros: ponteiros para caracteres, ponteiros para inteiros, ponteiros para ponteiros para inteiros, ponteiros pararegistros etc. O computador faz questão de saber de que tipo de ponteiro você está falando. Para declarar um ponteiro p para um inteiro, diga
int *p;
Para declarar um ponteiro p para um registro cel, diga
struct cel *p;
Um ponteiro r para um ponteiro que apontará um inteiro é declarado assim:
int **r;
Operador*
Acessa o conteúdo armazenado na variável.
Ex: int nome; nome_aux , *ptr_nome;
Operador&;
É usado para indica o Endereço da variável
Ex. ptr_nome = &nome;
Função malloc()
Utilizada em problemas de estrutura de dados,listas,encadeadas,pilhas,filas,árvores binárias e grafos.
A função malloc() serve para alocar memória e tem o seguinte protótipo:
void *malloc (unsigned int num);
A funçao toma o número de bytes que queremos alocar (num), aloca na memória e retorna um ponteiro void * para o primeiro byte alocado. O ponteiro void *pode ser atribuído a qualquer tipo de ponteiro. Se não houver memória suficiente para alocar a memória requisitada a função malloc() retorna um ponteiro nulo.
Função free()
Quando alocamos memória dinamicamente é necessário que nós a liberemos quando ela não for mais necessária. Para isto existe a função free() cujo protótipo é:
void free (void *p);
Basta então passar para free() o ponteiro que aponta para o início da memória alocada. Mas você pode se perguntar: como é que o programa vai saber quantos bytes devem ser liberados? Ele sabe pois quando você alocou
...