gpt4 book ai didi

c++ - 指针中++ 运算符的行为

转载 作者:太空狗 更新时间:2023-10-29 23:26:32 25 4
gpt4 key购买 nike

我有一个结构数组,我创建了一个指向结构中第一个元素的指针。我已经看到在我的代码中指针上使用了 ++ 运算符,如下所示:ptrStruct++,这究竟是做什么的?转到下一个数组位置?还是用作运算符重载?

代码在这里,对象来自Ogre3D:

RGBA colours[nVertices];
RGBA *pColour = colours;
rs->convertColourValue(ColourValue(1.0,0.0,0.0), pColour++); //0 colour
rs->convertColourValue(ColourValue(1.0,1.0,0.0), pColour++); //1 colour
rs->convertColourValue(ColourValue(0.0,1.0,0.0), pColour++); //2 colour

最佳答案

++,当应用于指针时,将所述指针前进到下一个项目。它通过基于所指向项目的大小进行缩放来实现这一点。

因此,如果您有一个指向位置 0x1000char *pcpc++ 会将其前进到下一个 char,或 0x1001。但是,int *pi(假设 sizeof (int)4)将从位置 0x1000 前进到 0x1004

这不是您通常需要担心的事情,除非您在不同的指针之间进行转换。足以说明:

RGBA colours[nVertices];
RGBA *pColour = colours; // same as &(colours[0])
pColour++; // now &(colours[1])

只会将 pColour 推进到指向 colours[1]

关于c++ - 指针中++ 运算符的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16184151/

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