【发布时间】:2018-01-24 06:00:47
【问题描述】:
这些代码完美运行:
#include <ctime>
int main()
{
time_t t;
struct tm* now;
t = time(0); // Here is my attention
now = localtime(&t); // and here
return 0;
}
现在我想在 if 语句中使用它作为条件,所以我想在一行中执行此操作。我试试这段代码:
now = localtime(&(time(0)));
但我得到了错误:
E0158 表达式必须是左值或函数指示符
为什么我不能在另一个函数内部调用一个函数并将其结果用作参数?
附:我在 Visual Studio 2017 中工作。
【问题讨论】:
-
您尝试获取存储在堆栈中的值的引用。
-
@Check
t也在“堆栈”上(具有自动存储持续时间)。 -
你可以使用函数的结果作为参数,但
&(time(0))不是函数的结果,time(0)是。 -
您无法获取右值的地址。查看this 以了解有关术语的说明。
-
谢谢,我想说的和你一样@muXXmit2X 但我说错了。^^
标签: c++ visual-studio function parameter-passing pass-by-reference