c++ - 为什么不进行交换?
问题描述
未交换
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;
}
}
}
输出是预期排列的,但和输入完全一样
解决方案
void f(struct a s)
s
按值传递,它复制其内容。您需要通过引用或地址传递它来修改调用者的原始结构。
void f(struct a& s)
或者
void f(struct a* s)
...
f(&s);
推荐阅读
- python - discord.py 将变量添加到命令
- java - 使用 Java MongoClient 更新 MongoDB 中嵌入文档中的项目
- javascript - TippyJS 工具提示的位置很奇怪,但在滚动页面或调整窗口大小后正确显示
- javascript - SCRIPT1010:编译时 IE11 中的预期标识符
- powershell - Powershell 过滤器问题缺少结果
- sql - Bigquery iso8601 字符串到时间戳
- javascript - 在自定义 Cypress 命令中为每个循环中断
- spring-boot - 我们可以将休眠与弹簧网通量一起使用吗
- php - 将变量值设置为行数据php
- powershell - 如何使用powershell将变量添加到csv文件?