Fortranの配列は添字が1から始まるのに、Cでは0から始まる。
FortranのプログラムをCに書き換える場合ここが問題になる。
こんなときは、たとえばその配列を扱う関数の中で、減分演算子で添え字をずらしてしまえば良いらしい。
このあたりを試してみるプログラムは以下の通り。
関数の中では、--x; を実行すれば、x[1], x[2], x[3]が、実はx[0], x[1], x[2]を指すようになる。
/* テストプログラム */
#include <stdio.h>
int ftest(int*);
int main()
{
int x[]={0,1,2,3,4,5,6,7,8,9};
printf("out-bef: %d %d %dn", x[1], x[2], x[3]);
ftest(x);
printf("out-aft: %d %d %dn", x[1], x[2], x[3]);
return 0;
}
int ftest(int *x)
{
--x;
printf("in : %d %d %dn", x[1], x[2], x[3]);
return 0;
}
FortranのプログラムをCに書き換える場合ここが問題になる。
こんなときは、たとえばその配列を扱う関数の中で、減分演算子で添え字をずらしてしまえば良いらしい。
このあたりを試してみるプログラムは以下の通り。
関数の中では、--x; を実行すれば、x[1], x[2], x[3]が、実はx[0], x[1], x[2]を指すようになる。
/* テストプログラム */
#include <stdio.h>
int ftest(int*);
int main()
{
int x[]={0,1,2,3,4,5,6,7,8,9};
printf("out-bef: %d %d %dn", x[1], x[2], x[3]);
ftest(x);
printf("out-aft: %d %d %dn", x[1], x[2], x[3]);
return 0;
}
int ftest(int *x)
{
--x;
printf("in : %d %d %dn", x[1], x[2], x[3]);
return 0;
}
※コメント投稿者のブログIDはブログ作成者のみに通知されます