我有一个结构数组,我做了一个指向结构中第一个元素的指针.我已经看到++运算符在我的代码中用于指针,如下所示: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)
++,当应用于指针时,将所述指针前进到下一个项目.它通过基于所指向项目的大小进行缩放来实现.
所以,如果你有一个char *pc指向位置0x1000,pc++将它推进到下一个char,或0x1001.但是,int *pi(假设sizeof (int)是4)将从位置前进0x1000到0x1004.
除非你在不同的指针之间进行投射,否则这通常不需要担心.我只想说:
RGBA colours[nVertices];
RGBA *pColour = colours; // same as &(colours[0])
pColour++; // now &(colours[1])
Run Code Online (Sandbox Code Playgroud)
将简单地提前pColour指出colours[1].