sai’s diary

プログラミング関連の備忘録とつぶやきを書いています。

C - 配列変数のアドレス参照方法の違い(配列要素のアドレスと配列自体のアドレス)

配列のポインタを取得したい場合 a)配列名のみ b)&配列名[0] c)&配列名 の3通りの書き方があります。

アドレスはいずれも同じになるためあまり気にしていませんでしたが人に聞かれて調べてみたところ演算結果に差異があったのでメモ。

a)、b)は配列に含まれる先頭要素のポインタが取得でき、 c)は配列自身のポインタが取得できます。 http://c-faq.com/aryptr/aryvsadr.html

なので、"char foo[10];“の配列に対して a),b)のポインタに対して+1すると1byte加算される、 c)のポインタに対して+1すると10byte加算される。 という差異が出ます。

c)の挙動を開発で期待することはないかと思いますが、豆知識として。