在函数返回值上使用一元和运算符

pam*_*eho 8 c pointers function unary-operator

我想在函数后面应用一元'&'运算符来操作函数返回值.但是,我得到一个编译时错误(我使用MinGW的gcc)

test.c:在函数'main'中:

test.c:8:12:错误:左值作为一元'&'操作数

我制作了一个代码,让我的问题更容易理解:

int function();
void function2(int *param);

main()
{
    function2(&function1());
}

int function1()
{
    return 10;
}

void function2(int *param)
{
    return;
}
Run Code Online (Sandbox Code Playgroud)

此代码创建相同的编译时错误.

问题是:如何在function2"()"中使用'&'运算符,而不在其他地方使用其他代码?

R..*_*R.. 12

您想要的是在C99及以后通过以下方式实现:

function2((int[]){function1()});
Run Code Online (Sandbox Code Playgroud)

即制作包含函数返回值的复合文字.


Ste*_*sop 11

你不能.函数的返回值是值,但不是对象.它在内存中没有指定的位置,没有地址,所以你不能指向它.相反,你可以写:

int a = function1();
function2(&a);
Run Code Online (Sandbox Code Playgroud)