5

重複の可能性:
C では、ポインターを宣言するための正しい構文は何ですか?
Cポインタ表記を修正

違いは何ですか

int* x

int *x

(存在する場合) ?

4

6 に答える 6

7

両方とも同じです。唯一の違いは、そのような方法で多くの変数を宣言できないことです。

int* x, a, b; //a and b are not pointers

int *x, *a, *b; //all are pointers

私は最初の表記法を使用します。私にとっては、変数がポインター自体ではなくポインター型であることを示しています。

于 2012-11-29T18:26:01.417 に答える
1

違いはありません。どちらの場合も int ポインターを取得します。

2 つ目の方法を好む理由は、複数の変数を一度に宣言する場合です。

int *str, *foo;
int* str, foo;

これらの 2 つの行は異なります。最初の行は int への 2 つのポインターを宣言しますが、2 番目の行は int への 1 つのポインターと 1 つの int 型変数を宣言します。

于 2012-11-29T18:25:15.873 に答える
1

ポインタと同じ定義です。どちらもintへのポインタです

于 2012-11-29T18:25:29.010 に答える
1

この場合、空白はコンパイラにとって重要ではありません。しかし、一部の人々はそれを別の意味で解釈するかもしれません (何が何を指しているのかなど)。私の意見では、良いことではありません (空白はあまり考慮されるべきものではないため)。

于 2012-11-29T18:25:40.513 に答える
1

まったく違いはありません。

どちらの場合も、これらはへのポインタですint

*タイプではなく識別子に関連付けられています

type明確なビジョンのために、との間にスペースを空けるベスト プラクティス*です。

int *p;

たとえば、あなたが書いた場合

int *p,q;という訳pではありますpointerが。*が識別子名に関連付けられていることを意味しますqint

于 2012-11-29T18:25:56.923 に答える
1

それらは同じですが、複数の変数を宣言するときは注意が必要です:

 int* x, y; // x is a int*, while y is just an int
 int *z, *w; // both z and w are int*
于 2012-11-29T18:26:06.410 に答える