對不起,我花了大部分時間試圖解決什麼可能是一個簡單的指針問題,想知道是否有人可以提供幫助。如何使用指針間接地從函數返回(動態分配的)數組?
我想要一個函數,它返回一個數字和一個數組到main(),因此至少需要使用其中的一個指針。該數組必須在函數內動態分配。
我試圖在下面以簡化形式展示我的最佳嘗試。我只是得到「分段錯誤」。
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;
}
[這樣做的原因是,我有一個函數,在一個文件中讀取,並我想返回的行數和包含該文件的內容到主陣列()。我希望它動態分配數組,以便該程序將適用於任何大小的文件。]
感謝您的幫助!
所有三個答案都非常有幫助,謝謝大家! – user1725306 2013-03-24 18:31:59