小编pan*_*kaj的帖子

当指针看起来合适时,为什么指针分配会显示左值错误?

给了我一段我们必须猜测输出的代码。

我的输出:60

#include <stdio.h>

int main()
{
    int d[] = {20,30,40,50,60};
    int *u,k;
    u = d;
    k = *((++u)++);
    k += k;
    (++u) += k;

    printf("%d",*(++u));

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

预期: k = *((++u)++)将等于30,因为它将迭代一次(++ u),然后将迭代但不分配。所以我们在d [1]中。

(++u) += k 在这里,u将迭代到下一个位置,向其添加k,然后将结果分配给u的下一个元素。

实际结果:

main.c: In function ‘main’:
main.c:16:16: error: lvalue required as increment operand
     k = *((++u)++);
                ^
main.c:18:11: error: lvalue required as left operand of assignment
     (++u) += k;
Run Code Online (Sandbox Code Playgroud)

这使我在指针的概念上更加困惑。请帮忙。

c pointers lvalue

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

标签 统计

c ×1

lvalue ×1

pointers ×1