C言語のポインタと配列について理解があいまいなところがあったので整理します。 ↓のコードがそもそもの混乱の原因です。 int main() { int a[] = {1,2,3}; int *b = a; : return 0; } ↓だと混乱しないのですが...。 int main() { int a[] = {1,2,3}; int *b = &(a[0]); : return 0; } 配列名だけだと配列の先頭アドレスを指すのでint *b = a;とint *b = &(a[0]);って同じことやってるんですね。 はじめのコードだけ見るとポインタと配列って同じじゃないかと錯覚してしまいます。 このあたりの疑問はポインタはメモリのアドレスさしてるだけだってことと、メモリのどこ(スタックorヒープor静的領域)を使ってるのか意識することでだいぶ理解することができました。Cのメモリ管理の
![ポインタと配列 - A Day In The Life](https://cdn-ak-scissors.b.st-hatena.com/image/square/8d1c50f4a8d113fdc1dfd7fec8ba7871419b8db9/height=288;version=1;width=512/http%3A%2F%2Fimg.f.hatena.ne.jp%2Fimages%2Ffotolife%2Fg%2Fglass-_-onion%2F20090417%2F20090417160720.png%3F1239952054)