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

削除された内容 追加された内容
配列ポインタに対する加算 配列aの配列ポインタそのものに *pa+1 などの計算をしても、 それは決して先頭アドレス値に+1をしたものを意味せず、 *pa+1 はa[1]を意味します。 同様に*pa+2はa[2]を意味します。
→‎配列ポインタに対する加算: このように、ポインタ型やアドレスに対する加算は、通常の加算とは意味が異なります。
42 行
 
配列は必ず<code>a[i]</code>と<code>a[i+1]</code>とのアドレス間が等間隔なので、
もしコンパイラ開発者がこのような処理を実装しようとするなら際には、単に、配列の先頭アドレスをコピーする際に一緒に配列のアドレス間隔もコピーするように実装すれば済みます。
 
なので、配列要素をひとつひとつコピーする方式と比べればコピー回数を大幅に減らせるので、プログラマーはポインタ配列の活用をすることで、要素数がとても多い配列の場合には高速化につながります。
 
なお、<code>(&a[0]) +1</code> などを表示してもじよう <code>a[1]</code>を意味します。
 
このように、ポインタ型やアドレスに対する加算は、通常の加算とは意味が異なります。
 
;コード例
<syntaxhighlight lang=c>
#include <stdio.h>