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

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
タグ: 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次元の配列を指すと要素型へのポインターの使用例]:<syntaxhighlight lang="C">
#include <stdio.h>
 
21 行
 
int *pa = a; /* 配列名(この場合は「a」)は配列の先頭要素(int)のアドレスを示す。
&a は配列のアドレスを表すのでその場合は、int (*)[10] が型となる。 */
printf("%d \n", *(pa + 2)); //ポインターpaを使って配列aの要素を表示する。
printf("\n");
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang="text">
 
実行結果
<pre>
2 3 5 7
5
</syntaxhighlight>
</pre>
 
一般に配列の先頭要素のアドレスを格納したポインター変数 pa では、 +0 によって配列の0項目。+1によって配列の1項目、+2によって配列の2項目、・・・を参照できます。