diferencia entre * y & en c

C
Un puntero, en C, se declara como sigue:
	tipo * nombre_puntero ; //char *pchar;

Diferencia entre "*" y "&"
  '&': direccion de memoria
  '*': contenido de esa dirección de memoria
  
	char a = 'm';		/* Variable 'a' de tipo char */
	char *pchar;	/* Puntero a char 'pchar' */	

	pchar = &a;	/* 'pchar' <- @ de 'a' */

	printf("la direccion de memoria de 'a' es: %p \n", &a); //la direccion de memoria de 'a' es: 0061FF1B
	printf("y su contenido es : %c \n", *pchar); //y su contenido es : m


Source

Also in C: