 
 
 
 
 
 
 
  
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 です。
 
 
 
 
 
 
 
