在C语言中将数组赋值给函数指针参数

3

在我的函数调用之前声明了指针,并且希望在函数执行时获得数组。 我遵循这里回答的问题,以获得以下代码

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

myfunction是指

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个回答

7

*x[k] = k ;替换为(*x)[k] = k ;,或者更好的方式是如下所示:

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

[]*在C运算符优先级表中结合得更紧,导致了错误。

你期望的是:(*x)[k]
但是实际得到的是:*(x[k])

实例链接


你也可以使用 *(*x + k) = k*(*y + k) = k 作为替代语法。 - struct
1
太棒了!让我疯狂的是我找了这样一个错误有多久...谢谢你。 - Brieuc de R

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接