1

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

例子:

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(最后一次更新)。我得到一个数组,如unary( )* 的无效参数类型。我该如何纠正?

4

3 回答 3

2

Inexp1exp2变量var是一个指针。所以使用普通数组下标与取消引用变量相同。您尝试取消引用变量两次

一件好事是,*var它与var[0]. 或者更准确地说*(var + x)是相同的var[x]。(作为一种好奇心,由于加法的交换性质,*(var + x)*(x + var)which 导致var[x]与 相同x[var]。)

于 2013-11-09T15:52:26.193 回答
1

从 中删除*运算符*var[0]。在功能exp1上,它应该是

var[0] = 4.0;  

在功能exp2上,它应该是

var[0] = 7.0;   

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

于 2013-11-09T15:52:08.943 回答
1

删除多余的**var[0].

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

于 2013-11-09T15:52:54.767 回答