【问题标题】:error: cannot convert 'float (*)[b]' to 'float**' for argument '3' to 'void错误:无法将参数 '3' 转换为 'float (*)[b]' 到 'float**' 到 'void
【发布时间】:2020-08-21 02:21:14
【问题描述】:
void add_element(char *tablenameadd, 
                 char headladd[][16], 
                 float **tableadd, 
                 int hcols, 
                 int trows, 
                 int tcols)
{
    ...
}

main(int argc, char *argv[])
{
    add_element(tname, 
                headl, 
                arr1, 
                hlb, 
                a, 
                b);
}

错误:无法将参数 '3' 转换为 'float (*)[b]' 到 'float**' 到 'void add_element'。

我想将未指定或可变的二维数组传递给函数。

arr1 是从一个文件中导入的,在导入之前具有未知数量的列和行,由通常的浮点表数据组成。 a 是行,barr1 的列。

【问题讨论】:

  • 请编辑您的问题,并正确格式化,并显示Minimal, Reproducible Example
  • 欢迎来到 Stack Overflow。请阅读the help pages,接受SO tour,阅读How to Ask,以及this question checklist。最后,请学习如何edit您的问题以改进它们,例如通过显示minimal reproducible example
  • 至于一个关于问题的猜测,虽然数组可以衰减到指向其第一个元素的指针,但数组数组将衰减到指向数组的指针(因为第一个元素是数组)不是指向指针的指针。
  • 在示例中不足以猜测...因为未定义 tname、head1、arr1、h1b、a 和 b...我从您的文字中假设 b 是问题...但你没有说明它是如何定义的......所以我们无法帮助找到它的问题。
  • arr1 是从具有未知数量的列和行的文件中导入的,直到导入由通常的浮点表数据组成

标签: c++ arrays function


【解决方案1】:

将二维数组转换为一维数组并将其传递给函数并将其转换回二维数组


float arradd[trows][tcols];

int as=0, a=0, b=0;

while(as<=(tcols*trows))
{
  arradd[a][b]=tableadd[as];
  as=as+1;
  if(a==trows)
  {
    a=0;
    b=b+1;
  }
  else
  {
    a=a+1;
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多