小编Ilw*_*hoi的帖子

关于错误的困惑:要求左值作为一元'&'操作数

我一直试图通过编写简单的代码来理解指针的概念,但遇到了一个错误问题,似乎我无法解决或理解它。

#include <stdio.h>

int *foo(void);

int main(void) {
    printf("%d\n", *foo());

    return 0;
}

int *foo(void) {
    static int num = 1;
    ++num;
    return &(++num);

}
Run Code Online (Sandbox Code Playgroud)

这是错误消息。

error: lvalue required as unary ‘&’ operand
  return &(++num);
Run Code Online (Sandbox Code Playgroud)

函数'foo()'返回一个指向int的指针,并且main应该使用*运算符来打印返回的int。对于foo()中的静态num,我认为通过放置静态限定符,num不再是临时变量,因此'&'可用于num。

c rvalue lvalue pre-increment

5
推荐指数
2
解决办法
144
查看次数

标签 统计

c ×1

lvalue ×1

pre-increment ×1

rvalue ×1