C言語配列の添え字の始まりは0です。
つまり、配列の内容を先頭から順に表示する際は、以下の様に 0~(要素数未満)までの添え字をループで辿ります。
#include <stdio.h>
int main(void)
{
int i;
int iarr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
for (i = 0; i < 9; i++) {
printf("%d ", iarr[i]);
}
return 0;
}
0が基準(0が添え字の開始)になっている為、これを0-baseの配列といいます。
0-baseの配列は、プログラミングをする上では非常に便利な事が多いのですが、
時と場合によっては、現実世界の感覚で、配列の添え字を1始まり(1-base)にしたい時があるかもしれません。
そんな時に使える裏技が、以下のコード^^;)↓↓
int * array = &iarr[-1];
(本来0-baseの配列を、1-baseでアクセスする事ができます♪)
使い方)
#include <stdio.h>
int main(void)
{
int i;
int iarr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int * array = &iarr[-1];
for (i = 1; i <= 9; i++) {
printf("%d ", array[i]);
}
return 0;
}
結果)
はい、見事に配列の情報へ1-baseでアクセスできました~♪
ついでに、当たり前ですがC言語の規格違反の裏技の為、予期せぬバグが起こるかもしれませんのでご注意・・・。