是否可以将指针传递给文字?

时间:2018-05-25 21:03:12

标签: c++ pointers methods syntax literals

想象一下我们有:

void foo(int *num){}

我们知道我们总是将5作为参数传递,然后可以这样做:

int var = 5;
foo(&var);

是否有任何语法可以避免显式变量声明?

本质上是这样的:

foo(&(5));

1 个答案:

答案 0 :(得分:3)

您只能获取lvalue的地址。文字是prvalue,而不是左值,所以你不能取字面的地址。从概念上讲,不需要5这样的文字来存储任何存储空间,如果没有某种形式的存储空间,就没有地址可供使用。

但是,您可以将其传递给const int &

void foo(const int &) {}

int main()
{
    foo(5);
}