Um ponteiro é um tipo especial de variável que armazena um endereço.

Um ponteiro pode ter o valor:

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.


Operadores com Ponteiro

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