Perchè in C i vettori sono identificati da un puntatore che punta al loro inizio.
Dato che una stringa in C è solo un vettore di caratteri,
function(char *stringPtr) passa un vettore di caratteri (una stringa),
function(char stringPtr) passa un carattere, e non un vettore di caratteri.
Per passare un vettore di interi, l'intestazione corretta è quella col puntatore:
function(int *vectorPtr)
function(int vectorPtr) passa solo un intero. Tra l'altro, se provi a passare il nome di un vettore a questa funzione, il compilatore ti segnalerà che stai facendo un cast da int* a int, e dovrebbe avvertirti.