为什么我不能获取返回值的地址?

Sir*_*lot 3 c pointers lvalue

我已将一些代码拆分为两个文件,之前它正在运行.在一个文件中,我有一个函数,它有一个out值参数,它是一个指向指针的指针.

我正在通过调用getter并取消引用它来填充此参数:

foo(&bar());
Run Code Online (Sandbox Code Playgroud)

但是我得到一个错误,说''和'需要一个l值'.我理解这个错误意味着什么,但我认为我能够做到这一点,因为它是一个指针,因此它代表了原始的"事物".

是否与实际指针内存位置可能发生变化的事实有关,即使它指向正确的事情?但为什么它在同一个文件之前才有效呢?

提前致谢!

Dav*_*nan 5

好吧,你需要一个左值,即可以分配的东西.您无法分配函数的返回值.

你需要做这样的事情:

temp = bar();
foo(&temp);
Run Code Online (Sandbox Code Playgroud)