在C#中为函数指针参数赋值数组

xxb16uws  于 2023-01-29  发布在  C#
关注(0)|答案(1)|浏览(167)

我在函数调用之前声明指针,并希望在函数执行时获得数组。

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

我的函数是

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;

有人能指出我应该怎么做吗?

mo49yndu

mo49yndu1#

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

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

在C运算符优先级表中,[]*绑定更紧,导致该故障。
您期望:(*x)[k]
但你会得到:*(x[k])
Live example

相关问题