私はちょうどいくつかのコードで誰かを助けてきました。彼はこれを持っていました:
char dataArray[10];
次に、配列の先頭へのポインターを取得したいと考えました。使用するのではなく:
&dataArray[0]
あるいは単に
dataArray
彼は使用した
&dataArray
彼はそこにポインタへのポインタで終わったのですか?&dataArray
何が彼に与えるかわかりません。
私はちょうどいくつかのコードで誰かを助けてきました。彼はこれを持っていました:
char dataArray[10];
次に、配列の先頭へのポインターを取得したいと考えました。使用するのではなく:
&dataArray[0]
あるいは単に
dataArray
彼は使用した
&dataArray
彼はそこにポインタへのポインタで終わったのですか?&dataArray
何が彼に与えるかわかりません。
&dataArray[0]
タイプchar *
です。へのポインタchar
です。dataArray
タイプですchar[10]
&dataArray
タイプになりchar (*)[10]
ます。それは配列へのポインタです。それとは別に、値は同じになります。つまり、同じアドレスを指しますが、型に互換性がある必要はありません。
ここでは、それらのどれもポインターツーポインターではありません。それらは、異なる型を持つ単なるポインタです。
注: 配列の減衰プロパティは、関数の引数として渡された場合などにchar [100]
減衰するためです。char *
dataArray と &dataArray[0] は配列の最初のインデックスのアドレスを指すため、同じものですが、&dataArray は配列全体のアドレスを指すか、10 インデックス配列全体が存在するアドレスを与えると言えます。あります(全体として)