是否可以在 C 中制作一个空的二维数组,主数据中包含已知行数和列数。
e.g。 int my_array[10][10]
然后在函数中传递它(空):
my_function(r,c,my_array)
为了执行某些操作并填充2D数组并在主数据库中将其返回?
如果是的话:我必须采用malloc-ed?动态对吗?主要的“免费”? 我使用void或返回my_array?我在互联网上找到了一些例子,我感到很困惑。 有没有任何例子作为指南?
答案 0 :(得分:1)
当你定义这样的变量时:
int my_array[10][10];
它创建一个2D整数数组。当你这样做时,malloc
或free
没有任何内容。
您可以按如下方式声明myfunction
:
void myfunction(int r, int c, int array[r][c])
然后在此函数内部,您可以修改array
,并且可以在调用函数中查看更改。
请注意,此语法使用基于其他两个参数的可变大小数组参数。
编辑:
以下是您如何使用此功能的示例:
void initialize(int r, int c, int array[r][c])
{
int i,j;
for (i=0;i<r;i++) {
for (j=0;j<c;j++) {
array[i][j] = 0;
}
}
}
int main()
{
int my_array[10][10];
initialize(10,10,my_array);
// my_array now contains all zeros
...
return 0;
}