运行如下代码:
#include <iostream>
using namespace std;
int a[10][10];
int main()
{
cout << a[0] << ' ' << a[1] << ' ' << a[2] << ' ' << a[3] << endl;
a[1][1] = 1, a[2][1] = 2;
swap(a[1], a[2]);
cout << a[0] << ' ' << a[1] << ' ' << a[2] << ' ' << a[3] << endl;
cout << a[1][1] << ' ' << a[2][1];
return 0;
}
可以得到结果:
0x490020 0x490048 0x490070 0x490098
0x490020 0x490048 0x490070 0x490098
2 1
可以发现,虽然已经用 swap() 交换了 a[1] 和 a[2] 但输出的地址并没有改变,而这两行的确是交换了。
请问原因?