Un puntero es una variable que apunta a una dirección en memoria. Evidentemente, en dicha dirección de memoria debe haber algo. Por ejemplo, usualmente se emplean los punteros para referencias. Supongamos que tienes la siguiente estructura:
struct ESTRUCTURA
{
char szVar1[100];
int iVar2;
bool bVar3;
};
Supongamos que dentro de una función tu tienes un objeto tipo ESTRUCTURA y la quieres pasar por referencia a otra función, la cuál modificará la estructura que pases por parámetro. Entonces, tienes que pasar la dirección de memoria y emplear un puntero. Veamos:
void Func1()
{
ESTRUCTURA obj;
memset(&obj, 0, sizeof(ESTRUCTURA));
Func2(&obj); // Pasamos la dirección de memoria de obj
cout << obj.bVar3;
}
void Func2(ESTRUCTURA* pObj) // Aquí verás ya el puntero pObj
{
strcpy(pObj->szVar1, "Hola mundo!");
pObj->iVar2 = 10;
pObj->bVar3 = true;
cout << pObj->szVar1 << endl;
}
Otra función de los punteros es cuando creas un objeto en el Heap:
ESTRUCTURA* pObj = new Estructura();
// empleas pObj;
delete pObj;
Saludos.