将数组分配给C中的函数指针参数

时间:2014-11-05 11:18:27

标签: c arrays pointers

我在函数调用之前声明指针,并希望在执行函数时获取数组。我按照here回答的问题获取以下代码

double *x;
double *y;
myfunction(1.0,&x,&y);
printf("x[0] = %1.1f\n",x[0] );

myfunction is

void myfunction(double data, double **x, double **y){
    /* Some code */
    int calculated_size = 10;
    *x = malloc(calculated_size*sizeof(double));
    *y = malloc(calculated_size*sizeof(double));
    int k;
    for (k = 0;k < calculated_size; k++)
    {
        *x[k] = k ;
        *y[k] = k ;
    }

}

一旦尝试分配

,就会出现分段错误
*x[k] = k;

有人可以指出我应该这样做的确切方式吗?

1 个答案:

答案 0 :(得分:7)

*x[k] = k ;替换为(*x)[k] = k ;或更好地使用,如下所示

int *xa = *x;
xa[k] = k ;

[]比导致错误的C Operator precedence table中的*更紧密。

您期望:(*x)[k]
但是你得到:*(x[k])

Live example