In realtà questa è una domanda da "warning"
In caso di dichiarazione sulla stessa linea:

int* p, k;

solo p è un puntatore, k è un intero.
la sintassi corretta sarebbe

int *p, *k;

per dichiarare due puntatori a int.

Il problema nasce dal desiderio del C++ di astrarre il più possibile i dati.
la cosa divertente è che facendo un typedef

typedef int* PINT;
PINT p, k;

sono due puntatori a int;
testato sul borland