Answer
That comes from "C" ( "plain c", "pure c", whatever ).
When a pointer variable is already declared, its used like this:
...
*p = &x;
*q = SomePointerFunc();
....
I read that the original inventors of "c" wanted programmers to declare pointers variables with the same syntax as they are used, with the star before the variable identifier:
...
int *p;
int *q;
...
The same goes for arrays:
...
x[5] = 'a';
y[77] = SomeItemFunc();
...
...
char x[5];
int y[100];
...
Some teachers that I had, insist to declare types for variables & functions this way (star close to identifier):
...
int *p;
int *q;
...
Instead of this (star next to type identifier):
...
int* p;
int* q;
...
Extra
In Java, and other languages, like C#, the declaration of arrays, or pointers are next to the type, leaving the variable or function identifier alone, like this pseudocode:
*int p;
*int q;
char[5] x;
int[100] y;
I prefer this technique.
Cheers.