++运算符在指针中的行为

Pac*_*cha 2 c++ pointers

我有一个结构数组,我做了一个指向结构中第一个元素的指针.我已经看到++运算符在我的代码中用于指针,如下所示: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
Run Code Online (Sandbox Code Playgroud)

pax*_*blo 7

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

所以,如果你有一个char *pc指向位置0x1000,pc++将它推进到下一个char,或0x1001.但是,int *pi(假设sizeof (int)4)将从位置前进0x10000x1004.

除非你在不同的指针之间进行投射,否则这通常不需要担心.我只想说:

RGBA colours[nVertices];
RGBA *pColour = colours;    // same as &(colours[0])
pColour++;                  //     now &(colours[1])
Run Code Online (Sandbox Code Playgroud)

将简单地提前pColour指出colours[1].