【发布时间】:2020-02-03 11:33:21
【问题描述】:
所以我试图在不使用第三个变量的情况下交换两个数字。我通过了我试图通过引用交换的两个数字。当要交换相同的数字时(例如将 1 与 1 交换),我得到的输出为零。我知道如何解决这个问题,但我无法理解为什么当 a 和 b 相同时我一直得到 0。
谁能解释为什么我得到的是零而不是交换的数字?
void swap(int *a,int *b)
{
//if(a==b)
// return;
*a=*a+*b;
*b=*a-*b;
*a=*a-*b;
}
int main()
{
int n=3,x=0,y=0;
int a[n][n];
for(int i=0;i<n;i++)
swap(&a[x][i],&a[i][y]);
return 0;
}
【问题讨论】:
-
int a[n][n];不是有效的 C++。 C++ 不支持变长数组。您没有初始化数组。从a读取值会导致未定义的行为 -
你认为
a包含哪些数字? -
@U.瓦特 代码没有意义。你想做什么?
-
这无关:您没有通过引用传递值。您正在按值传递指针。要通过引用传递值,您可以改用
void swap(int &a,int &b)。 -
尝试
int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};而不是int a[n][n];