ポインタ型変数の複数宣言について

ポインタ型変数の複数宣言について

先日、Objective-Cを習い始めた人にポインタ型変数の宣言について質問された。

1, int* a;
2, int *a;
3, int * a; // アスタリスクの前後にスペースもOK
4, int*a; // スペース無しも見た事ないな…。

上記のポインタ型変数の宣言は、何が違うのか?
結論から言うと、変数1個の場合は、全て同じ(変数aは、全てintのポインタ型)

変数1個なら、話はアスタリスクがあるかないかだけで話は簡単なのだが、一度に複数の変数を宣言する場合はどうなるか?

1, int* a,b; // (非常に誤解しやすいので注意!)intのポインタ型かと思いきや、*aと同じ。bはただのint型
2, int *a, *b; // これは分かりやすい。両方ともintのポインタ型
3, int a, *b; // こんな書き方はしないだろうけど、bだけintのポインタ型

【結論】
変数の前にアスタリスクがあったらポインタ型、無かったら通常の変数!

なんか、自分もint*はポインタ型intだと誤解していた…。