想象一下我们有:
void foo(int *num){}
我们知道我们总是将5作为参数传递,然后可以这样做:
int var = 5;
foo(&var);
是否有任何语法可以避免显式变量声明?
本质上是这样的:
foo(&(5));
答案 0 :(得分:3)
您只能获取lvalue的地址。文字是prvalue,而不是左值,所以你不能取字面的地址。从概念上讲,不需要5
这样的文字来存储任何存储空间,如果没有某种形式的存储空间,就没有地址可供使用。
但是,您可以将其传递给const int &
。
void foo(const int &) {}
int main()
{
foo(5);
}