C 奇怪的不兼容指针赋值
我正在写一些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*
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
的答案。谢谢大家,我现在理解得更好了!!