这是我的问题,我得到了这段代码,它需要为变量a,b,c写出2,5,1。但是捕获是不应该改变的,只有函数。我设法将b改为5,但我真的不知道如何在不使用厕所的情况下将a改为2。下面是代码:
#include <iostream>
using namespace std;
int& function(int a, int* b, int c) {
return *b;
}
int main()
{
int a, b, c;
a = b = c = 1;
function(a, &b, c) = 5;
cout << a << " , " << b << " , " << c << endl;
return 0;
}每一次帮助都会受到高度赞赏。
我试过使用指针,但不应该更改主指针。
发布于 2022-11-22 00:45:33
如果您不能修改函数签名,那么这是一个可怕的问题。正如所写的,这是不可能的。编译器可以假定a保持1。
我见过一种教授想让你上床睡觉
int& function(int a, int* b, int c)
{
b[1] = 2;
return *b;
}但是这依赖于UB,一个特定的体系结构和禁用的优化。https://godbolt.org/z/rc1d9oqab
如果允许修改函数签名,是的,那么传递一个a的引用。
https://stackoverflow.com/questions/74526268
复制相似问题