这是我的问题,我得到了这段代码,它需要写出2,5,1,来表示变量a,b,c。但问题是main不应该改变,只应该改变函数。我设法把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;
}
我们将非常感谢您的帮助。
我尝试使用指针,但不应更改main。
1条答案
按热度按时间slmsl1lt1#
如果你不能修改函数签名,那么这是一个可怕的问题。正如所写的,这是不可能的。编译器可以假设
a
将保持为1。有一种教授我见过,会希望你把:
但这依赖于UB、特定架构和 * 禁用 * 优化。https://godbolt.org/z/rc1d9oqab
如果允许修改函数签名,那么就传递一个
a
的引用。