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