【问题标题】:Incompatible pointer type, expected float * but argument is of type float (*)[2]不兼容的指针类型,预期为浮点 * 但参数的类型为浮点 (*)[2]
【发布时间】:2021-04-09 05:45:16
【问题描述】:
#define N 5
#define Nv 2

float Cities[N][Nv]={ {0,1}, {3,4}, {1,2}, {5,1} ,{8,9}};
void PrintVec2(float *a, int n) {   
   
    int i;
    for (i = 0; i < (n / 2); i++) printf("\n%f %f", a[2 * i], a[2 * i + 1]);
    printf("\n");
}

//somewhere I call this
PrintVec2(Cities,N*Nv);

New*Nv 是一个数字,整数。如何解决此警告?

【问题讨论】:

  • 为什么不匹配参数的类型和传递的内容?
  • 我似乎不明白。
  • 您已经展示了如何调用PrintVec2(Cities,New*Nv);。现在,请编辑您的帖子以包含Cities 的确切声明,展示您如何填充它,提供minimal reproducible example。
  • New 是什么?
  • PrintVec2(Cities,N*Nv); => PrintVec2(&amp;Cities[0][0],N*Nv);

标签: c pointers arguments


【解决方案1】:

原型:

void PrintVec2(float *a, int n)

与输入参数不匹配:

PrintVec2(Cities,N*Nv);

函数原型正在寻找数组的地址。改成发送&amp;Cities[0][0]:

PrintVec2(&Cities[0][0],N*Nv);

【讨论】:

  • 值得回答吗?
  • @P__JsupportswomeninPoland - 如果这是一个真诚的问题,那么是的,值得回答。
  • 这是一个真诚的问题,现在工作正常,谢谢!!
猜你喜欢
  • 1970-01-01
  • 2020-02-28
  • 2015-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-22
相关资源
最近更新 更多