C++程序,求大神修改,是求一个二位数组内所有数字的和,用函数和指针

#include<iostream.h>
int fun1(int a[][],int n,int m)
{

int *p;
int k=0;
for(int i=0;i<n;i++)
{
p=a[i];

for(int j=0;j<m;j++ )
{
k=k+*p;
p++;
}
}
cout<<k;
return 0;
}
void main(){
int a[4][4]={{1,2,3,4},{1,2,3,4},{1,2,3,4},{1,2,3,4}};
fun1(a,4,4)<<endl;
}

就提示这个错误了
D:\Program Files (x86)\Microsoft Visual Studio\MyProjects\上机实验\数组求和.cpp(2) : error C2087: '<Unknown>' : missing subscript
D:\Program Files (x86)\Microsoft Visual Studio\MyProjects\上机实验\数组求和.cpp(22) : error C2664: 'fun1' : cannot convert parameter 1 from 'int [4][4]' to 'int [][1]'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

int fun1(int a[][],int n,int m)改成int fun1(int **a,int n,int m)
fun1中所有对a[i][j]的访问改成a[i*m+j]
调用fun1((int**)a,4,4);
还可以改成int fun1(int a[][4],int n)但不推荐
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-20
p赋值时在数组前面加个取址符
相似回答