gpt4 book ai didi

C++ 数组与指针

转载 作者:行者123 更新时间:2023-11-28 00:58:14 25 4
gpt4 key购买 nike

在 C++ 中以下是有效的

    int *p = new int[3];
*p=0;
*(++p)=1;

以下也是有效的

    int j[] = { 0, 1, 2};
*j = 3;

给定,*j =3 有效,为什么跟随无效

    *(++j)=4;//invalid.. lvalue required as increment operand

最佳答案

像这样的表达式

*(++j)=4;//invalid.. lvalue required as increment operand

j 是一个数组 int[3] “衰减”到指向该数组第一个元素的指针。该指针是右值,无法分配,因此您不能执行 *(++j) 之类的操作。

在您的另一个示例中,p 是一个非 const 指针,可以赋值:

 int *p = new int[3];
*p=0;
*(++p)=1;

您使用右值获得的行为类似于使用 const 指针会发生的行为:

 int const *p = new int[3];
*p=0;
*(++p)=1;

关于C++ 数组与指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10022970/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com