二维数组名的确是一个包含列元素个数的一维数组指针,指针类型不一致,因此你的编译通不过
不过如果你是在是要通过,也可以用强制类型转换:
deng(lamp, (int **)light);
不过函数里面会不会产生逻辑错误和语法错误就不知道了,因为没看见程序
因为你的light不是用int**定义的。两种解决办法,一是把light的定义改为int**,然后利用new完成内存申请。二是把deng的定义修改为int deng(int *s,int* p[])。
参数类型不同,不能转换,正确的参数如:
int deng( int *s, int p[][4] ); //二维数组的传送 需要指明第一位的下标
//或者写作: int deng( int *s, int (*p)[4] );
void main()
{
int p[][4]={{1,2,3,4},{5,6,7,8},{9,10,0,0}};
int s;
deng(&s,p);
......