#include <math.h>
#include <stdio.h>
#pragma pack(1)//一字节对齐
typedef struct __para
{
int a;
char b;
float c;
}PARA;
#pragma pack(0)
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
PARA para[3] = {{1,4,3},{11,5,33},{111,6,333}};
printf("内存对齐后结构体的大小 %d\n",sizeof (PARA));
printf("内存对齐后结构体数组的大小 %d\n",sizeof (para));
//内存对齐后结构体的大小 9
//内存对齐后结构体数组的大小 27
printf("结构体数组名 的地址 %p\n",para);
printf("结构体数组[0] 的地址 %p\n",¶[0]);
printf("结构体数组[0]第一个成员的地址 %p\n",¶[0].a);
//结构体数组名 的地址 0x7ffe52cae1f0
//结构体数组[0] 的地址 0x7ffe52cae1f0
//结构体数组[0]第一个成员的地址 0x7ffe52cae1f0
printf("结构体数组[0]+1 的地址 %p\n",¶[0]+1);
printf("结构体数组[1] 的地址 %p\n",¶[1]);
//结构体数组[0]+1 的地址 0x7ffe52cae1f9
//结构体数组[1] 的地址 0x7ffe52cae1f9
printf("结构体数组[0].b 的地址 %p\n",¶[0].b);
printf("结构体数组[0].b 的地址 %p\n",(char*)(¶)+4);
//结构体数组[0].b 的地址 0x7ffe52cae1f4
//结构体数组[0].b 的地址 0x7ffe52cae1f4
printf("结构体数组[1].b 的地址 %p\n",¶[1].b);
printf("结构体数组[1].b 的地址 %p\n",(char*)(¶[0]+1)+4);
//结构体数组[1].b 的地址 0x7ffe52cae1fd
//结构体数组[1].b 的地址 0x7ffe52cae1fd
return 0;
}
结构体数组
最新推荐文章于 2024-09-20 11:54:03 发布