申し訳ありませんが、私は今日のほとんどを、おそらく単純なポインタの問題を解決するために費やしてきました。誰かが助けてくれるかどうか疑問に思っていました。
main()に数値と配列を返す関数が必要なので、これらの少なくとも1つにポインターを使用する必要があります。配列は、関数内で動的に割り当てる必要があります。
以下に、最善の試みを簡略化した形で示してみました。「セグメンテーション違反」が発生します。
double my_func(double **ptr);
int main(int argc, char **argv){
double value;
double *a;
value = my_func(&a);
printf("Value is %f array[1] is %f \n", value, a[1]);
return 0;
}
double my_func(double **ptr){
int i;
/* generate an array */
void *memory = malloc(10*sizeof(double));
if (memory == NULL){
printf("ERROR: out of memory\n");
}
*ptr = (double *) memory;
/* Fill the array with some values */
for (i=0;i<10;i++)
{
**(ptr+i) = 42;
}
return 3.14;
}
[これは、ファイルを読み込む関数があり、ファイルの内容を含む行数と配列をmain()に返したいためです。プログラムが任意のサイズのファイルで動作するように、配列を動的に割り当てたいのです。]
助けてくれてありがとう!