【发布时间】:2015-08-17 23:36:54
【问题描述】:
我一直在寻找如何在任何地方执行此操作,但我找不到任何东西,我想我可能问错了问题,但在这里,我一直在尝试只使用一个函数来阅读或打印您在 main 上定义的任何二维数组,然后将其作为单个参数传递给函数...这是我的代码:
int main() {
int array2d[2][5] = {{0}};
load_array(array2d,2);
return(0);
}
void load_array(int a[][5],int row) {
int i = 0,j = 0,column;
column= sizeof(*a) / sizeof(int);
do {
j=0;
while (j < column && scanf("%d",&a[i][j++]) == 1);
} while (++i < row);
}
我已经设法通过在函数内部计算来避免传递列数,所以问题真的是我能做什么这并不复杂,以避免传递行数,在这个情况下,以便我可以随时使用此功能扫描我在其他项目上创建的二维数组?
感谢您的帮助!!
【问题讨论】:
-
您是否使用支持 C99 或 C11 的编译器? (基本上,您的编译器是 MSVC 还是 Turbo-C?如果是,那么与能够回答否相比,您遇到了问题。)
-
我认为是 C11,我该如何检查? :S
-
一种可能性:显示来自
gcc --version的输出,但如果您首先使用gcc,这不会成为问题。如果您不知道使用 Microsoft Visual Studio 或 Turbo-C,那么您很可能是安全的。如果您没有使用 GCC,请确定您正在使用的平台和编译器,但您可能会没事。 -
是的,我正在使用带有 gnu gcc 编译器的代码块 :)
-
当您使用 Code::Blocks 和 GNU GCC 时,应该没问题。您可能需要指定命令行选项
-std=c99或-std=gnu99(或指定 11 而不是 99),但您的编译器基本上肯定可以处理 C99(也可能是 C11)。如果你有 GCC 5.1.0 或更高版本,默认编译模式是(终于!)-std=gnu11(默认支持 C11)。
标签: c arrays function parameters size