将具有未知行和列大小的二维数组传递给函数 (C++)
Passing a 2d-Array with an unknown row and column size to a function (C++)
到目前为止我得到了这个功能:
void sumcol(int a[r][c],int r,int c){
int i,j,sum=0;
//int sizec= sizeof(a)/sizeof(a[0][0]);
//int sizer= sizeof(a)/sizeof(a[0]);
for (i=0;i<r;i++){
for (j=0;j<c;j++) sum=sum+a[j][i];
cout<<"Suma pe coloana "<<i<<" este : "<<sum<<endl;
sum=0;
}
}
我在第一行收到错误消息,指出 r 和 c 未在此范围内声明。为什么?虽然我就在那里阅读:https://www.eskimo.com/~scs/cclass/int/sx9a.html
这是正确的声明方式。
我认为您真正的问题是将二维数组传递给函数。如果你在编译时知道你的数组大小,我会建议如下:
template <int r, int c>
void sumcol(int (&a)[r][c]){
int i,j,sum=0;
//int sizec= sizeof(a)/sizeof(a[0][0]);
//int sizer= sizeof(a)/sizeof(a[0]);
for (i=0;i<r;i++){
for (j=0;j<c;j++) sum=sum+a[j][i];
std::cout<<"Suma pe coloana "<<i<<" este : "<<sum<< std::endl;
sum=0;
}
}
并像这样调用它:
int main()
{
int temp[3][5]; // You don't forget to initialize this in your real code
sumcol(temp);
}
或者,如果您使用的是动态分配的矩阵数组 (malloc)。比使用类似的东西:
void sumcol(int** a,int r,int c){
do stuff
考虑先阅读此主题Passing a 2D array to a C++ function
我个人发现使用 C++ Vectors 而不是 C 数组更容易做这些事情。
到目前为止我得到了这个功能:
void sumcol(int a[r][c],int r,int c){
int i,j,sum=0;
//int sizec= sizeof(a)/sizeof(a[0][0]);
//int sizer= sizeof(a)/sizeof(a[0]);
for (i=0;i<r;i++){
for (j=0;j<c;j++) sum=sum+a[j][i];
cout<<"Suma pe coloana "<<i<<" este : "<<sum<<endl;
sum=0;
}
}
我在第一行收到错误消息,指出 r 和 c 未在此范围内声明。为什么?虽然我就在那里阅读:https://www.eskimo.com/~scs/cclass/int/sx9a.html 这是正确的声明方式。
我认为您真正的问题是将二维数组传递给函数。如果你在编译时知道你的数组大小,我会建议如下:
template <int r, int c>
void sumcol(int (&a)[r][c]){
int i,j,sum=0;
//int sizec= sizeof(a)/sizeof(a[0][0]);
//int sizer= sizeof(a)/sizeof(a[0]);
for (i=0;i<r;i++){
for (j=0;j<c;j++) sum=sum+a[j][i];
std::cout<<"Suma pe coloana "<<i<<" este : "<<sum<< std::endl;
sum=0;
}
}
并像这样调用它:
int main()
{
int temp[3][5]; // You don't forget to initialize this in your real code
sumcol(temp);
}
或者,如果您使用的是动态分配的矩阵数组 (malloc)。比使用类似的东西:
void sumcol(int** a,int r,int c){
do stuff
考虑先阅读此主题Passing a 2D array to a C++ function
我个人发现使用 C++ Vectors 而不是 C 数组更容易做这些事情。