c++ struct
与数组一样,结构体的指针指向首地址。
【数组 与 struct 互相赋值】
将数组中元素赋值给struct中元素(类型需一致,否则保持默认值),若数组元素少,struct中未被赋值的保持默认值。若数组元素多,对应位置的元素会赋值给struct。
#include<iostream> struct MyStruct { short n1; //默认0 short n2; }; int main() { uint16_t naWidth[4] = { 0,1,2,3 }; //uint16_t是unsigned short,可以给short型赋值 MyStruct *pMyStruct = (MyStruct*)naWidth; //naWidth默认指向首地址,所以n1=0,n2=1 pMyStruct = (MyStruct*)(naWidth + 2); //pMyStruct指向第3个地址,n1=2,n2=3。 pMyStruct->n1 = 10; pMyStruct->n2 = 11; //naWidth第3、4个元素被改为10、11,因为pMyStruct指向的内存就是第3、4元素的内存 return 0; }
【struct 赋给 数组】
#include<iostream> struct MyStruct { short n1; //默认0 short n2; }; int main() { uint16_t nArray[4] = { 0,1,2,3 }; //uint16_t是unsigned short,可以给short型赋值 MyStruct *s_My = (MyStruct*)nArray; //nArray默认指向首地址,所以n1=0,n2=1 memcpy(nArray + 2, s_My, 2 * sizeof(uint16_t)); //将n1、n2的值赋给数组的后2个元素。即数组变为{0,1,0,1} s_My = (MyStruct*)(nArray + 2); //n1=2,n2=3 return 0; }
【值得一看】