C言語のきほん「ポインタの基本(12)添字演算子」

スポンサーリンク
C言語

今回は、添字演算子[ ]について理解を深めよう。

ポインタpと整数iを加算したものに間接演算子*を適用した間接式*(p + i )についてみていこう。

( )内は、pとiの加算である。したがって、算術型の値どうしと同様、p + i とi + pは等価である。

すると、*(p + i)と*(i + p)も同じということになる。
実は、配列要素をアクセスする式p[ i ]も、i[ p ]と記述することが可能なのである。

添字演算子[ ] は、二つのオペランドを持つ2項演算子である。

オペランドの一方の型は、
Type型のオブジェクトへのポインタ
であり、他方の型は、
整数型
である。生成する値の型は
Type型である。

添字演算子[ ]のオペランドの順序は任意である。
すなわち、a[ 3 ] と3[ a ]は同じなのである。

次のプログラムで確認しよう。

「添字演算子と間接演算子」の働きを確認するプログラムである。

なお、本プログラムは、Windows 11 Home(23H2)上で、 Visual Studio Code(1.90.0)を使用して作成し、gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0でコンパイルしている。

//添字演算子と間接演算子

#include <stdio.h>

int main(void)
{
    int a[4];

    0[a]= a[1] = *(a + 2) = *(3 + a ) = 8;

    for (int i = 0; i < 4; i++)
        printf("a[%d] = %d\n",i,a[i]);

    return 0;
    
}

実行結果

a[0] = 8
a[1] = 8
a[2] = 8
a[3] = 8

配列aの4個の要素すべてに8を代入・表示している。

参考) 新・明解C言語 入門編 第2版 柴田 望洋 (著)SBクリエイティブ

コメント

タイトルとURLをコピーしました