結局、アドレスだし、コンピュータには
変数がアドレスか値かは区別できないよ。

ただ、コンパイラがソースを解釈する時に混同しないように
各言語でポインタ用の型を用意しているんだよ。

int *a;
int *b;
a=&b;
これが成立したら、
*a
がbのポインタを指すのか、bの内容を指すのかコンパイラは判断できないからね。