源代码如下:
//主函数向被调用函数传递一个二维数组,被调用函数将数组的值全部改为1
#include <stdio.h>
void test(int M,int N,int a[M][N]) //被调用函数,参数1和2表示数组长度,参数3为传递的数组 此处报错
{
int i,j; //这里的 i 和 j 是用来给循环计数的
for(i = 0 ;i < M ;i++) //此处报错
{
for(j = 0 ;j < N ;j++) //此处报错
{
a[M][N] = 1; // 两层循环把数组值改为1 但是此处报错
}
}
}
int main()
{
int m,n; //定义m,n变量表示 数组的长和宽
scanf("%d%d",&m,&n);
int a[m][n]={0}; // 数组初始化为 0
test(m,n,a); // 调用函数,然后数组值应该都变成1了
int i,j; // i和j是循环的计数器
for(i = 0 ;i < m ;i++)
{
for(j = 0 ;j < n ;j++)
{
printf("%d",a[m][n]); // 输出数组值
}
printf("\n");
}
return 0;
}
编译失败。报错信息如下:
use of parameter outside function body before ']' token
'M' was not declared in this scope
'N' was not declared in this scope
'a' was not declared in this scope
我知道看代码很累,所以我尽量注释清楚我的代码,希望大家能提点迷津。
代码没有中文符号。
我想知道这段代码的问题出在哪里,为什么会报错,还有将多维数组作为参数时有什么需要特别主义的地方?辛苦了。