1行に複数の変数があると宣言するとどうなりますか?例えば.
int x, y, z;
すべてintです。問題は、次のステートメントのyとzは何ですか?
int* x, y, z;
それらはすべてintポインタですか?
あなたの最初の文で:
int x, y, z;
それらはすべてint
sです。
ただし、2番目のものでは:
int* x, y, z;
x
のみがint
へのポインタです。 y
とz
はプレーンなint
sです。
それらすべてをint
sへのポインタにしたい場合は、次のことを行う必要があります。
int *x, *y, *z;
Xだけがintポインタです。 YとZはちょうどintになります。 3つのポインターが必要な場合:
int * x, * y, * z;
Cでは、宣言が使用法を模倣していることを知っておくことが重要です。 *単項演算子は、Cでは右結合です。したがって、たとえばint *x
では、xはint(またはint-star)へのポインター型であり、int x
では、xはint型です。
他の人も言及しているように、int* x, y, z;
では、Cコンパイラはxをint-starとして宣言し、yとzを整数として宣言します。