ポインター宣言でのアスタリスクの配置

4、5、6 は同じもので、test だけです ポインタです。 2 つのポインターが必要な場合は、次を使用する必要があります。

int *test, *test2;

または、さらに良い (すべてを明確にするため):

int* test;
int* test2;

アスタリスクの周りの空白は意味がありません。 3 つの意味はすべて同じです:

int* test;
int *test;
int * test;

int *var1, var2 " は単に人々を混乱させることを意図した邪悪な構文であり、避けるべきです。それは次のように展開されます:

int *var1;
int var2;

多くのコーディング ガイドラインでは、1 行に 1 つの変数のみを宣言することを推奨しています。 .これにより、この質問をする前のような混乱を避けることができます。私が一緒に働いたほとんどの C++ プログラマーは、これに固執しているようです。

少し余談ですが、私が便利だと思ったのは、宣言を逆方向に読むことです。

int* test;   // test is a pointer to an int

これは非常にうまく機能し始めます。特に、const ポインターの宣言を開始し、そのポインターが const であるかどうか、またはポインターが指しているものが const であるかどうかを判断するのが難しくなります。

int* const test; // test is a const pointer to an int

int const * test; // test is a pointer to a const int ... but many people write this as  
const int * test; // test is a pointer to an int that's const