加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 09:55:03 所属栏目:百科 来源:网络整理
导读:我在函数调用之前声明了指针,并希望在执行函数时获取数组.我按照回答 here的问题获得了以下代码 double *x;double *y;myfunction(1.0,x,y);printf("x[0] = %1.1fn",x[0] ); 我的功能在哪里 void myfunction(double data,double **x,double **y){ /* Some co
我在函数调用之前声明了指针,并希望在执行函数时获取数组.我按照回答 here的问题获得了以下代码

double *x;
double *y;
myfunction(1.0,&x,&y);
printf("x[0] = %1.1fn",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;

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

解决方法

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

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

[]绑定比C Operator precedence table中的*更严重导致故障.

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

Live example

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读