首页 > 解决方案 > 你能解释一下为什么在下面的代码中编译时错误

问题描述

为什么我在下面给出的代码中遇到错误......

#include <stdio.h>
    void foo(int*);
    int main()
    {
        int i = 10;
        foo((&i)++);(in this line error shows like this) //error: lvalue required as increment operand
    }
    void foo(int *p)
    {
        printf("%d\n", *p);
    }

标签: cpointersfunction-pointers

解决方案


来自会员访问运营商

address-of 运算符产生其操作数的非左值地址,适用于初始化指向操作数类型的指针。

增量/减量运算符

前缀和后缀递增或递减的操作数 expr 必须是整数类型(包括 _Bool 和枚举)、实浮点类型或指针类型的可修改左值。

简单地说,&算子并没有为算子产生合适的对象++


推荐阅读