我在下面编写了代码,其中包含一个带有指向大小为 3 的双精度数组的指针的函数。我的问题是:当我将指针的地址传递给双变量(显然不是数组)然后想要更改函数“f”中这个双变量的值如下所示,当我以这种方式实现时,结果是正确的并且变量的值发生了变化:
#include <stdio.h>
void f(double (*)[3]);
double a = 7.5;
int main()
{
double* b = &a;
f(&b);
printf("a = %lf\n", a);
return 0;
}
void f(double (*hi)[3])
{
double **sth = (double **) hi;\
*(*sth) = 1;
}
但是当我如下实现时,值不会改变:
void f(double (*hi)[3]){
(*hi)[0] = 1;
}
任何想法和建议肯定会受到赞赏。