繁体   English   中英

C++如何改变a的值

[英]C++ how to change the value of a

这是我的问题,我得到了这段代码,它需要为变量 a、b、c 写出 2、5、1。但问题是主要的不应该改变,只有 function。我设法改变了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;
}

每一个帮助将不胜感激。

我尝试使用指针,但不应更改主要内容。

如果你不能修改 function 签名,那就是一个可怕的问题。 正如所写,这是不可能的。 允许编译器假定a将保持为 1。

我见过有一种教授希望你上交:

int& function(int a, int* b, int c) 
{
    b[1] = 2;
    return *b;
}

但这依赖于 UB,一种特定的架构和禁用优化。 https://godbolt.org/z/rc1d9oqab

如果您被允许修改 function 签名,是的,那么传递a .

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM