请教一个C++数组和指针的问题

来源:百度知道 编辑:UC知道 时间:2024/06/04 01:58:52
#include<iostream>
using namespace std;

void RowSum(int A[][4],int nrow){ \\这段
for(int i=0;i<nrow;i++){
for(int j=1;j<4;j++)
A[i][0]+=A[i][j];
}
}
int main(){
int Table[3][4]={{1,2,3,4},{2,3,4,5},{3,4,5,6}};
for(int i=0;i<3;i++){
for(int j=0;j<4;j++)
cout<<Table[i][j]<<" ";
cout<<endl;
}
RowSum(Table,3);
for(i=0;i<3;i++){
cout<<"Sum of row"<<i<<"is"<<Table[i][0]<<endl;
}
return 0;
}

程序在vc++6.0下编译运行没问题,我的问题是,RowSum形参“int A[][4]”换成“int **A”,或者“int A[]”为什么会编译报错呢?
还有13点积分,都送啦,希望各位不吝赐教
谢谢!
补充一下,数组名做函数的参数不就是为了传递数组的首地址吗,那我用一个一维的数组或者指针传递数组的首地址为什么不行呢?谢谢各位热心人啦

void RowSum(int A[][4],int nrow)函数里参数是一个二维数组,而int **A是一个指向int类型指针的指针,int A[]是一个一维数组。
所以会报错

void RowSum(int **A,int nrow)
{
for(int i=0;i<nrow;i++)
{
for(int j=1;j<4;j++)
*(*A+i)+=*(*(A+i)+j); /*貌似没有A[i][0]+=A[i][j]这种用法啊,如果A为直向指针的指针*/
}
}

楼上的几位都可以回答你的问题.

3楼的不错,应该是最佳答案.