分析下面的代码,求运行结果(64位)。
#include <stdio.h>
struct
{
int id;
unsigned char arg;
char *p;
void (*func)(void);
} test;
int main(void)
{
printf("sizeof(test.id):%d\n", sizeof(test.id));
printf("sizeof(test.arg):%d\n", sizeof(test.arg));
printf("sizeof(test.p):%d\n", sizeof(test.p));
printf("sizeof(test.func):%d\n", sizeof(test.func));
printf("sizeof(test.test):%d\n", sizeof(test));
return 0;
}
分析:
char —— 1字节
short —— 2字节
int —— 4字节
float —— 4字节
double —— 8字节
指针 —— 4字节
这里主要还要注意字节对齐的问题,以最小公倍数为基本单位;这里是4字节对齐。(具体字节对齐的知识可以百度了解)