【问题标题】:Strange incompatible assignment of pointers奇怪的不兼容的指针分配
【发布时间】:2011-02-27 09:49:07
【问题描述】:

我正在编写一些 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[]

双 *y_la

?

【问题讨论】:

标签: c gcc pointers


【解决方案1】:

你想要double *la[3];

正如你所拥有的,la 不是指向双精度的指针,而是指向包含三个事物的数组的单个指针,因此每个 la[i] 仍然是指向非双精度对象的指针,并且存在双重问题,因为你真的只有其中一个。

至于第二个问题,它们只是在参数列表中相同,即使在旧式声明中也是如此。一旦你输入了一个原型,那么类型一致性就会受到一组更精确的规则的约束。

【讨论】:

  • Nitpick: "所以每个 la[i] 仍然是一个指针" - 每个 la[i] 都是一个数组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-29
  • 2018-11-17
相关资源
最近更新 更多