配列の添え字の角括弧 [ ] を関数の戻り値につける
教育用の覚書
C言語の角括弧 [ ] は「配列添え字演算子(array subscript operator)」と言い、
(アドレスをくれる何か)[i] を (*((アドレスをくれる何か)+(i))) と同じものとして扱うというルールなので、例えば int * 型の戻り値の関数の呼出しにくっつけて func(x)[2] みたいな書き方をしても動作する。以下、サンプルコード
#include <stdio.h> int *func ( int *a ) { return a+1; } int main (void) { int a[5]={0,1,2,3,4}; printf("%d\n", func(&a[1])[2] ); }
このコードは "4" を出力する。なぜなら (a[1]のアドレス) → (func()で一つとなりのアドレス、つまり a[2]) → ([2]で二つ隣のアドレス、つまり a[4])となるから。