gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 14:24:49 24 4
gpt4 key购买 nike

呜呜呜,

目前我正在学习 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/

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