我在函数调用之前声明了指针,并希望在执行函数时获取数组.我按照这里回答的问题获取以下代码
double *x;
double *y;
myfunction(1.0,&x,&y);
printf("x[0] = %1.1f\n",x[0] );
Run Code Online (Sandbox Code Playgroud)
我的功能在哪里
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 ;
}
Run Code Online (Sandbox Code Playgroud)
}
一旦尝试分配,就会给我一个分段错误
*x[k] = k;
Run Code Online (Sandbox Code Playgroud)
有人能指出我应该这样做的确切方式吗?
更换*x[k] = k ;用(*x)[k] = k ;或更好地利用,如下图所示
int *xa = *x;
xa[k] = k ;
Run Code Online (Sandbox Code Playgroud)
[]结合更紧比*在C运算符优先级表造成的故障.
你期望:(*x)[k]
但你得到:*(x[k])