私はCプログラミングを初めて勉強しています。悩ましい質問があります。 のは、次のコードを見てみましょう:私はこのコードを実行した場合配列変数がそのアドレスと等しいのはなぜですか?
int main()
{
int arr[3]={1,2,3};
printf("%d\n", arr);
printf("%d", &arr);
}
は、それはARRと& ARRの両方に同じ結果を与えます。しかし、なぜarr = & arr? 私はこのトピックに関してかなり多くの答えを見ましたが、どれも私には分かりません。簡単に言えば、配列変数は配列の最初の要素のアドレスを保持しています。たとえば、arrはarr [0]のアドレスを保持しています。たとえばarr = 4340です。次に変数arrをメモリのどこかに格納し、 & arrは値4340を格納するメモリセルのアドレスです。& arr = arrの場合、4340が4340番地に格納されていることがわかります。しかし、4340番地の値は配列の最初の要素の値ですそれは1でなければならない??? 私はこの時点で非常に混乱しており、本当に助けに感謝します。
[comp.lang.c FAQ](http://www.c-faq.com/)のセクション6を読んでください。これは、Cの配列とポインタの間のしばしば混乱する関係の良い説明です(規則1:配列はポインタではありません)。 –
@Keith Thompson:参考になりました!私は間違いなくそれを見ます。 – Nguyen