c语言中二维数组的问题

#include<stdio.h>
#include<stdlib.h>
#define M 6
#define N 5
void getdata(int (*)[M]);
void lineave(int [N][M],float *);
void outdata(int [N][M],float *);
void main()
{ int r[N][M];
float ave[N];
getdata(r);
lineave(r,ave);
outdata(r,ave);
}
void getdata(int(*sp)[M])
{
int i,j,x;
for(i=0;i<N;i++)
{j=0;
while(j<M)
{
x=rand()%41;
if(x>9)
{sp[i][j]=x;
j++;
}
}
}
}
void lineave(int s[][M],float *a)
{int i,j;
float ave;
for(i=0;i<N;i++)
{ ave=0;
for(j=0;j<M;j++)
ave=ave+s[i][j];
a[i]=ave/M;
}
void outdata (int sp[N][M],float a[])
{
int i,j;
printf("output the result:\n");
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
printf("%4d",sp[i][j]);
printf(":%f\n",a[i]);
}
printf("\n");
}
}
以上是代码,下面给出错误类型,请大神告知我哪里应该修改
error C2601: 'outdata' : local function definitions are illegal
执行 cl.exe 时出错.

1.obj - 1 error(s), 0 warning(s)

第1个回答  2015-07-21
void outdata(int sp[N][M], float a[]) 二维数组的参数,会转为一维数组。(int sp[N][M]可以转为引用或者指针追问

具体如何修改呢

第2个回答  2015-07-21
貌似没什么问题,试试把outdata的float a[]改成float *a追问

没用。。。..........

追答

我知道了,你看一下程序的大括号是不是错位了,outdata后面多了个大括号,lineave后面少个大括号。

追问

哦,,好了。。谢谢你的回答,你观察的真仔细,谢谢

本回答被提问者采纳
相似回答
大家正在搜