「C言語/配列とポインタ」の版間の差分
削除された内容 追加された内容
→一次元配列の場合: paiza.io タグ: 2017年版ソースエディター |
→1次元の配列と要素型へのポインター: paiza.io タグ: 2017年版ソースエディター |
||
7 行
また、p[i]は*(p+i)の[[W:糖衣構文|糖衣構文]]である<ref>p[i] ⇒ *(p+i) ⇒ *(i+p) ⇒ i[p] との交換則が成り立ち、難読化プログラミングでしばしば用いられる。<br>C言語のほかの糖衣構文]としては、 p->m ⇒ (*p).m があげられる。</ref>。
== 1次元の配列
次の例のように、ポインターに配列のアドレスを代入し、ポインター演算によって配列の要素を一括で参照することができる。(この他、一括ではなく要素ひとつひとつにポインタを作ることも可能だが、実用性が乏しいので、ひとつひとつのポインタについては本ページでは省略する。)ポインタ *pa には参照先配列の先頭のアドレス値が入るので、宣言するポインタの書式については、配列宣言ではなく一変数の宣言になる。
;[https://paiza.io/projects/cFKWhqT4SkA0C7ZAVMLEkw?language=c 1次元の配列
#include <stdio.h>
21 行
int *pa = a; /* 配列名(この場合は「a」)は配列の先頭要素(int)のアドレスを示す。
&a は配列のアドレスを表すのでその場合は、int (*)[10] が型となる。 */
printf("%d
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang="text">
2 3 5 7
5
</syntaxhighlight>
一般に配列の先頭要素のアドレスを格納したポインター変数 pa では、 +0 によって配列の0項目。+1によって配列の1項目、+2によって配列の2項目、・・・を参照できます。
|