「ジ・オリジン:補足」の編集履歴(バックアップ)一覧はこちら
「ジ・オリジン:補足」(2005/12/22 (木) 23:11:31) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
どうしても、C言語で1オリジンがいいんだよぅ、というわがままなあなたに。
C言語で配列を1オリジンで扱う方法も、なくもない。
【具体例1】
unsigned char hoge[100];
unsigned char* hoge2;
hoge2 = &hoge[-1];
こうすればhoge2を1~100でアクセスできる。
【具体例2】
#define ORIGIN_1((array),(num)) array[num-1]
これで、
unsigned char hoge[100];
があったとして、
ORIGIN_1(hoge, 1)
などとすれば、やはり1~100でアクセスできる。
【具体例3】
#define ORIGIN_1(num) (num-1)
これで、
unsigned char hoge[100];
があったとして、
hoge[ORIGIN_1(1)]
などとしても、やっぱり1~100でアクセスできる。
【具体例4】※動的確保のポインタを添え字で扱う場合
unsigned char pHoge = NULL;
pHoge = (unsigned char*)malloc((size_t)100);
pHoge--;
これで、やあっぱり1~100でアクセスできる。
ご満足、いただけたでしょうか。
どうしても、C言語で1オリジンがいいんだよぅ、というわがままなあなたに。
C言語で配列を1オリジンで扱う方法も、なくもない。
【具体例1】
unsigned char hoge[100];
unsigned char* hoge2;
hoge2 = &hoge[-1];
こうすればhoge2を1~100でアクセスできる。
【具体例2】
#define ORIGIN_1((array),(num)) array[num-1]
これで、
unsigned char hoge[100];
があったとして、
ORIGIN_1(hoge, 1)
などとすれば、やはり1~100でアクセスできる。
【具体例3】
#define ORIGIN_1(num) (num-1)
これで、
unsigned char hoge[100];
があったとして、
hoge[ORIGIN_1(1)]
などとしても、やっぱり1~100でアクセスできる。
【具体例4】※動的確保のポインタを添え字で扱う場合
unsigned char pHoge = NULL;
pHoge = (unsigned char*)malloc((size_t)100);
pHoge--;
これで、やあっぱり1~100でアクセスできる。
ご満足、いただけたでしょうか。
表示オプション
横に並べて表示:
変化行の前後のみ表示: