C语言结构体及其内存布局
结构体的定义 结构体的定义要使用struct关键字,并以";"结尾。 下面找个微软定义的结构体: typedef struct _FILETIME { DWORD dwLowDateTime; DWORD dwHighDateTime; } FILETIME, *PFILETIME, *LPFILETIME; 可以看出在定义结构体时使用了typedef,为_FILETIME起了一个别名,并定义了指向改结构 的指针PFILETIME。 结构体变量的初始化与赋值操作 使用初始化列表进行初始化 例如: FILETIME ft = { 88,99 }; 还可以使用memset进行清零初始化: FILETIME ft memset(&ft,0,sizeof(ft)); 结构体变量赋值 C++11标准之前只能在结构体变量初始化的时候可以使用列表进行初始化, 现在支持C++11标准的编译器可以在任意场合使用列表进行赋值,编译时不会报错. 例: C++11标准还可以直接在定义结构体时为每个成员指定初值,例: 但是最后还是不要使用新标准这两个特性,因为在不支持C++11标准的编译器上会报错, 一个空结构体的大小 一个空结构体的大小为1字节,而不是零字节 例: 计算结构体大小 结构体成员对齐值 typedef struct tagTest { char m_chTest; int m_nTest;