【发布时间】:2019-07-22 15:40:41
【问题描述】:
没有交换
void f(struct a s)
{
int t;
for (int i = 0; i < 10; i++)
for (int j = 0; j < 10; j++) {
if (s.b[j] > s.b[j + 1]) {
s.c = s.b[j];
s.b[j] = s.b[j + 1];
s.b[j + 1] = s.c;
}
}
}
输出是预期排列的,但和输入完全一样
【问题讨论】:
-
很难说到底是什么问题,因为这个例子似乎不完整。但这很可能是因为您将一些
a传递给f,然后检查它是否有更改,但f的s是按值获取的。 -
这里没有输出,也没有任何输入。但作为一种猜测,该函数按值获取其参数,因此任何更改都不会传播回调用者。
-
如果你想交换两个值,你应该使用的是std::swap。
标签: c++ struct reference pass-by-reference swap