Um ponteiro é um tipo especial de variável que armazena um endereço.
NULL
→ que é um endereço inválido. A macro NULL está definida na interface stdlib.h e seu valor é 0 (zero) na maioria dos computadores.
*p
→ é o valor da variável apontada por p. (Não confunda esse operador * com o operador de multiplicação!)
Por exemplo, se i
é uma variável e p
vale &i
então exibir *p
é o mesmo que exibir i
.
Exemplo prático:
#include <stdio.h>
#include <conio.h>
int main(void)
{
int valor = 27;
//declaração de variável ponteiro
int *ptr;
//atribuindo o endereço da variável valor ao ponteiro
ptr = &valor;
printf("Utilizando ponteiros\\n\\n");
printf ("Conteudo da variavel valor: %d\\n", valor);
printf ("Endereço da variavel valor: %x \\n", &valor);
printf ("Conteudo da variavel ponteiro ptr: %x", ptr);
getch();
return(0);
}
Os ponteiros podem aparecer em expressões, por exemplo:
se px
aponta para um inteiro x
, então *px
pode ser utilizado em qualquer lugar que x
seria.
#include <stdio.h>
int main() {
//declarando
int *p;
int p1;
int x = 10;
float y = 20.0;
//utiliza-se o &
p = &x;
printf("Conteudo apontado por p: %d \\n", *p);
p1 = p;
printf("Conteudo apontado por p1: %d \\n", *p1);
p = &y;
printf("Conteudo apontado por p: %d \\n", *p);
printf("Conteudo apontado por p: %f \\n", *p);
printf("Conteudo apontado por p: %f \\n", *((float *)p);
return 0;
}
Operações Matemáticas
Ponteiros Genéricos
int main (){
void *pp;
int *p1, p2 = 10;
p1 = &p2