【发布时间】:2017-11-22 13:18:18
【问题描述】:
给我的问题特别指出,函数采用整数 2d 数组和大小作为参数。这意味着, 1) 我不允许在声明时定义数组的大小。 2)我必须将行数和列数传递给函数。
我之前为一维数组做过它并且它工作,但是在二维数组的情况下它给出了一个语法错误。我制作了测试代码来检查语法的逻辑。这是有效的一维数组逻辑。 此外,这个模块只需要我在 C 中使用 stido.h 库。传递数组大小的大小的原因是在不同的函数中填充数组,其中循环条件将使数组大小通过索引
#include<stdio.h>
void print(int table[],int r);
int main()
{ int r=7,table[r];
print(table,r);
}
void print(int table[],int r)
{ printf("table rows is%d\n",r);
}
但是,当我尝试使用 2D 数组时,同样的逻辑不起作用。(给出语法错误)
#include<stdio.h>
void print(int table[][],int c,int r);
int main()
{int c=7,r=7,table[c][r];
print(table,c,r);
}
void print(int table[][],int c,int r)
{printf("table rows is\ntable cols is\n",r,c)
}
有人可以解释为什么会发生这种情况,并为这个问题提出解决方案。 ? 在此先感谢
【问题讨论】:
-
您遇到的语法错误是什么?
-
table[][]是不完整的类型。传递数组时必须至少指定最终维度,或者必须传递指向类型指针的指针(这与数组不同) -
将
int** table传递给您的函数 -
您的
printf()语句没有格式说明符%d -
您可以重新排列参数并尝试使用
void print(int c, int r, int table[c][r])...
标签: c arrays function multidimensional-array