C 言語の配列の添字は 0 から始まりますが、何とかこれをこちらの好き なものに変更する方法はないでしょうか?この問題はささいなことのようです が、不可能となると、不自然なプログラミングを強要されることになりかねな いので困ってしまいます。
他の言語では、任意の整数から添字を始めることが出来るものがあります。 例えば から までを添字として使いたい場合は
それで C 言語の場合はどうかというと、残念ながら正の整数から添字を始
める標準的な方法はありませんが、負の整数から添字を始める方法は場合によっ
ては、一応存在します。
/* * negative-index.c */ #include <stdio.h> #define LOWER (-2) #define HIGHER 5 int main() { int i; double adummy[HIGHER-LOWER+1], *a; a = adummy - LOWER; for (i = LOWER; i <= HIGHER; i++) { a[i] = i; } for (i = LOWER; i <= HIGHER; i++) printf("a[%d]=%f\n", i, a[i]); for (i = 0; i <= HIGHER-LOWER; i++) printf("adummy[%d]=%f\n", i, adummy[i]); return 0; }
a[-2]=-2.000000 a[-1]=-1.000000 a[0]=0.000000 a[1]=1.000000 a[2]=2.000000 a[3]=3.000000 a[4]=4.000000 a[5]=5.000000 adummy[0]=-2.000000 adummy[1]=-1.000000 adummy[2]=0.000000 adummy[3]=1.000000 adummy[4]=2.000000 adummy[5]=3.000000 adummy[6]=4.000000 adummy[7]=5.000000つまり、a[-2] が adummy[0] を指すように、ポインター a を細工します。実際には a[0] が ad[2] を指すように a = ad+2 とすれば OK です。