c++ - 为什么指针或值的递增会导致循环中的相同结果

标签 c++ pointers

呜呜呜,

目前我正在学习 c++ 并且有一个有趣的效果,我无法向自己解释。

为什么 *iterator++; 也适用于这种情况?

从我的角度来看,它应该增加指针的值。这是否意味着从 std::begin(feld) 返回的对象的 ++ 运算符被覆盖以处理它以使其舒适?我很困惑

void CArrayExamples::beginAndEndMethod()
{
    int feld[] = { 0,1,2,3,4,5,6,7,8,9 };
    
    int* iterator = std::begin(feld);
    int* ending = std::end(feld);

    while (iterator != ending)
    {
        std::cout << "iterator:" << iterator << std::endl;
        std::cout << "*iterator:" << *iterator << std::endl;
        std::cout << "ending:" << ending << std::endl;
        std::cout << "*ending:" << *ending << std::endl;
        std::cout << "-----------------------------------------------" << std::endl;

        //why does this both work? :D
        //*iterator++;
        iterator++;
        //TODO: Ask somebody!

    }
}

最佳答案

自增运算符++的优先级高于间接运算符*,所以*iterator++被解释为*(iterator++ ),即递增迭代器/指针并返回旧值指向的值。

不过,您的代码不使用返回值。

如果你想增加值,而不是迭代器/指针,写(*i​​terator)++

关于c++ - 为什么指针或值的递增会导致循环中的相同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63544478/

相关文章:

c++ - 传递文件或标准输入以模糊地 boost 进程子进程

c++ - 如何读取这些表达式 : *&pointer VS &*pointer

c++ - 以二进制模式写入文件不起作用

c++ - 从动态库中调用函数

c++ - 指针互换性与具有相同地址

java - 是否可以指向数组内的多个数组?

c++ - 如何使用基本循环创建二维数组矩阵

通过指针复制复杂的结构

c++ - 如何访问 Qtitan View 的滚动条?

c++ - 从 boost ptime 中删除秒、毫秒和微秒