我想通过另一个指针引用一个指向数组的指针。
示例:
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
(上次更新)。我得到一个像一样的无效参数类型()*的数组。我怎么能纠正这个?
答案 0 :(得分:2)
在exp1
和exp2
中,变量var
是指针。因此,使用普通数组下标与解除引用变量相同。您尝试取消引用变量两次。
要知道的是*var
与var[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
相同,这已经是您需要分配的内容。