重複の可能性:
配列名は C のポインターですか?
Cのp
との違いは何ですか?a
float a[10],*p; p=a;
float a[10],*p; p=a;
a
の配列10ですfloat
。
p
へのポインタfloat
です。の最初の要素を指しa
ます。
Cでは、配列はポインタではありません。配列とポインタは2つの異なるタイプです。例えば:
sizeof a; // compute the size of an array
sizeof p; // compute the size of a pointer
p = &a[1]; // this is valid, p points to the second element of a
a = &p[1]; // this is not valid, you cannot assign to an array
「差」を引き算の結果と定義すると、答えは0 です。
assert((p-a) == 0);
...他のポインタ値を代入するまでp
(a
ポインタ変数に名前を付けないため、これはできません。適切なコンテキストでポインタに減衰する配列に名前を付けます。たとえば、他のコンテキストがありますsizeof(p)!=sizeof(a)
)。