将数组引用到指针

时间:2013-11-09 15:49:32

标签: c arrays pointers

我想通过另一个指针引用一个指向数组的指针。

示例:

void exp()
{
    double var[2];
    exp1(&var[0]);
    printf("\n varvalue is %lf\n",var[0]);
}

void exp1(double *var)
{
    //updating the value
    *var[0]=4.0;
    exp2(&var[0]);
}

void exp2(double *var)
{
    *var[0]=7.0;
}

这应该将值更新为7.0(上次更新)。我得到一个像一样的无效参数类型()*的数组。我怎么能纠正这个?

3 个答案:

答案 0 :(得分:2)

exp1exp2中,变量var是指针。因此,使用普通数组下标与解除引用变量相同。您尝试取消引用变量两次

要知道的是*varvar[0]相同。或者更准确地说,*(var + x)var[x]相同。 (并且由于好奇心,由于添加的交换性质,*(var + x)*(x + var)相同,导致var[x]x[var]相同。)

答案 1 :(得分:1)

*移除*var[0]运算符。在函数exp1中,它应该是

var[0] = 4.0;  

在函数exp2中,它应该是

var[0] = 7.0;   

或者您可以删除[0]*var相当于var[0]

答案 2 :(得分:1)

删除*中的额外*var[0]

var[0]*(var + 0)*var相同,这已经是您需要分配的内容。