「C言語/配列とポインタ」の版間の差分

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
→‎配列とポインターの基本: 「式の中では、配列は「その先頭要素へのポインター」に読み替えられる」わけではなく、アドレス式の文脈に限って先頭要素のアドレスに等しい。またポインターとアドレスを混同している。
タグ: 2017年版ソースエディター
3 行
配列とポインターには密接な関係がある。
 
# 配列変数の名前は、アドレス式の文脈では先頭要素のアドレスに等しい。
式の中では、配列は「その先頭要素へのポインター」に読み替えられる(この場合、ポインターのしめす型は配列の要素型であるが多次元配列では複合的になるので次数の計算が必要になる [[#多次元配列と多次元配列へのポインター|後述]])。
# 配列変数の名前に sizeof 演算子を適用すると、 sizeof( 要素型 ) * 要素数が返る(単一の要素型のサイズではなく全体のサイズ)。
# Cでは、配列変数の名前は(Fortranの様に)代入の右辺には出来ない。
#: このため strcpy():番人型、memcpy():サイズ型の標準ライブラリー関数が用意されている。
 
また、p[i]は*(p+i)の[[W:糖衣構文|糖衣構文]]である<ref>p[i] ⇒ *(p+i) ⇒ *(i+p) ⇒ i[p] との交換則が成り立ち、難読化プログラミングでしばしば用いられる。<br>C言語のほかの糖衣構文]としては、 p->m ⇒ (*p).m があげられる。</ref>。