En primer lugar, usa la funcion buscar del foro o google, hay toneladas de informacion acerca de C/C++ en la red.
En segundo lugar, un puntero no tiene que ver con los arrays, se puede tener un puntero a un array o un array de punteros, pero no son lo mismo.
Cuando tu declaras una variable lo haces como, por ejemplo, int variable; con eso le estas asignango a la variable un nombre para poder usarla en otros sitios, pero la informacion que contiene la variable esta en algun punto de la memoria.
El puntero lo que dice es precisamente eso: DONDE HAY QUE BUSCAR EN LA MEMORIA EL CONTENIDO DE UNA VARIABLE.
por ejemplo:
// Esta es la forma normal y corriente
int opcion;
printf ("Hacemos el menu, bla bla bla, que opcion quieres?");
scanf ("%d", &opcion);
// Esto es con punteros
int* opcion;
printf ("Hacemos el menu, bla bla bla, que opcion quieres?");
scanf ("%d", opcion);
NOTA: Fijate en que no he puesto el "&" en el segundo scanf.
Asi que si el primer scanf lo que hace es "buscar" donde se guarda el contenido de la variable opcion indicando la & de referencia... En el segundo lo que haces es reservar dicho espacio y quedarte con la direccion donde esta, asi solo pasas la direccion en si.
En el caso de structs, objetos o clases es exactamente igual que lo que te he puesto. Y una diferencia MUY IMPORTANTE es que lo que normalmente se llama o accede mediante el "." (punto) cuando trabajas con punteros se hace con "->" (flecha).
Con esto tienes las nociones mas basicas. A partir de aqui... lo mejor es leer y hacer pruebas.