我试图在C ++中通过引用传递一个3x3数组。但是当我这样做时,我得到错误错误:在初始化时无法将'double *'转换为'double'。我试图按照this page上的说明进行操作。我有一个for循环,但我不会使用它,直到我可以让数组正确通过:
void transpose(double (&arr)[3][3] )
{
for (int counti = 0; counti < 3; counti++) {
for (int countj = 0; countj < 3; countj++) {
double i_swap = &arr[0][0];
}
}
}
int main()
{
double myarray[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
transpose(myarray);
return 0;
}
答案 0 :(得分:1)
&
是一个参考。你正试图设置一个你不能喜欢的双指针。
void transpose(double (&arr)[3][3] )
{
for (int counti = 0; counti < 3; counti++) {
for (int countj = 0; countj < 3; countj++) {
double i_swap = arr[0][0];
}
}
}
int main()
{
double myarray[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
transpose(myarray);
return 0;
}
答案 1 :(得分:0)
似乎很好,只需要交换部分(您可以使用std::swap
中的<algorithm>
)
void swap(double& a, double& b)
{
double temp = a;
a = b;
b = temp;
}
注意for
- 界限。最终代码:
for (int y=1; y<3; y++)
for(int x=0; x<y; x++) {
std::swap(mat[y][x], mat[x][y]); // stl
//swap(mat[y][x], mat[x][y]); // calling your swap function
//double temp = mat[y][x]; // no swap function
//mat[y][x] = mat[x][y];
//mat[x][y] = temp;
}