求二维数组平均值,并用一维数组形式输出二维数组,这样做有什么特殊情况会导致出错

#include <stdio.h>
#include <stdlib.h>
void shu(int p,int n,int m){
float a=0;int i,k;
for(i=0;i<n;i++){
for(k=0;k<m;k++){
a=a+(
(p+in+k));
}
}
printf("%.2f",a/(n
m));
for(i=0;i<n;i++){
for(k=0;k<m;k++){
printf("% d",(p+im+k));

}}}
int main()
{int i,k,r,n,m;
scanf("%d%d",&n,&m);
int a[n][m];
for(i=0;i<n;i++){
for(k=0;k<m;k++){
scanf("%d",&a[i][k]);
}
}
shu(a,n,m);
return 0;
}

格式化一下吧,*号看不见,累啊
你这个编译会报错吧,函数参数要求char *,但你传递了a,二维数组是不能传递给char *的

最根本的原因就是:
a=a+((p+in+k));这里 应该是

a = a+ (*(p+i*m+k)); //这里是 i*m,不是i * n;

img