【发布时间】:2018-06-23 00:44:48
【问题描述】:
我正在尝试在不同的函数中更改二维数组值,以便满足我的需要。 对于下面代码中的示例,我试图通过将 Matrix 更改为“1”来将 Matrix 更改为自反。
我在返回新数组并将其替换为主程序中的旧数组时遇到问题,以便我可以再次使用它。
int reflexive(int m, int n, int matrix[100][100])
{
for(int i = 1;i <= m; i++)
{
for(int j = 1; j <= n; j++)
{
if(i == j)
{
if(matrix[i][j] != 1)
matrix[i][j] = 1;
}
return matrix;
}
}
}
int main()
{
int matrix[100][100];
int m , n;
for(int i = 1;i <= m; i++)
{
for(int j = 1; j <= n; j++)
{
cin>>matrix[i][j];
}
}
matrix[m][n] = reflexive(m,n,matrix);
return 0;
}
我想修复此代码,以便它可以将完整的新二维数组返回到主程序。
【问题讨论】:
-
你可以定义一个
struct(保存数组)和/或使用std::vector -
打开你的 C++ 书中解释如何使用
std::array的章节,并学习如何使用这个类。与本机数组几乎相同的语义,但具有类似对象的语义,避免了这里的所有陷阱。尽管按值返回大型数组效率有点低,但这是稍后要处理的事情。出于学习 C++ 的目的,这很好。 -
没有新数组,函数正在修改你传递的数组。
-
** UnholySheep** 你能告诉我如何使用 std::vector 吗?
-
使用 Boost 矩阵或自己创建一个矩阵类。您可以使用
std::vector提供底层存储。
标签: c++ arrays pointers matrix return