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)