C 奇怪的不兼容指针赋值

C 奇怪的不兼容指针赋值,c,gcc,pointers,C,Gcc,Pointers,我正在写一些C代码 有这样一个函数 void Get(double x_la[], double y_la[], double z_la[]) 在函数体中,由于其他一些原因,我创建了 double (*la)[3]; 据我所知,x_la、y_la和z_la是double类型的指针 我需要将“la”中涉及的指针与前面的指针“连接”,所以我想尝试一下 la[0]=x_la; la[1]=y_la; la[2]=z_la; 但是在使用gnu编译器编译时,我得到了错误 错误:将“double*

我正在写一些C代码

有这样一个函数

void Get(double x_la[], 
double y_la[], 
double z_la[])
在函数体中,由于其他一些原因,我创建了

double (*la)[3];
据我所知,x_la、y_la和z_la是double类型的指针

我需要将“la”中涉及的指针与前面的指针“连接”,所以我想尝试一下

la[0]=x_la;
la[1]=y_la;
la[2]=z_la;
但是在使用gnu编译器编译时,我得到了错误

错误:将“double*”赋值给“double[3]”时类型不兼容

我做错了什么?否则怎么能做好呢

谢谢

p.D.申报完全一样吗

双y_la[]

双倍*尤拉


您想要
double*la[3]

正如您所看到的,
la
不是指向double的指针,而是指向一个由三个元素组成的数组的单个指针,因此每个
la[i]
仍然是指向double以外的元素的指针,而且问题重重,因为您实际上只有其中一个元素


至于第二个问题,它们在参数列表中是相同的,甚至在老式声明中也是相同的。一旦你输入了一个原型,那么类型一致性就由一组更精确的规则来控制。

挑剔:“所以每个la[i]仍然是一个指针”—每个
la[i]
都是一个数组。数组声明被广泛地覆盖了。这可能会有帮助:,特别是关于
cdecl
的答案。谢谢大家,我现在理解得更好了!!