sizeof() 是一种内存容量度量函数,功能是返回一个变量或者类型的大小(以字节为单位);在 C 语言中,sizeof() 是一个判断数据类型或者表达式长度的运算符。
测试代码:#include运行结果: 结论注意点: 1,结构体要使用sizeof()要注意字节对齐问题。 2,sizeof(数组名) 是数组内存长度。 3,sizeof(指针变量) 是指针变量长度,与硬件位数有关,64位机是8Byte,32位机是4Byte。typedef struct { char c1; short int c2; short int c[3]; }Test1TypeS; #pragma pack(push) // 将当前pack设置压栈保存 #pragma pack(1)// 必须在结构体定义之前使用,1个字节对齐 typedef struct { char c1; short int c2; short int cc[3]; }Test2TypeS; #pragma pack(pop) // 恢复先前的pack设置 #pragma pack(push) // 将当前pack设置压栈保存 #pragma pack(1)// 必须在结构体定义之前使用,1个字节对齐 typedef struct { char c1; short int c2; short int *pcc; }Test3TypeS; #pragma pack(pop) // 恢复先前的pack设置 Test1TypeS sc1; //没加结构对齐关键字 Test2TypeS sc2; //1个字节对齐 short int cc_buf[3]; Test3TypeS sc3 = {0, 0, cc_buf}; //1个字节对齐 int a1; long int a2; short int a3; char a4; float a5; double a6; char ba[7]={1,2,3,4,5,6,7}; char *pba=ba; char *pba1; short int bb[3]={1,2,3}; short int *pbb=bb; short int *pbb1; void main(void) { printf("以下是电脑 Window 10 64bit 系统下 Dev-C++ 64bit 软件测试结果。仅供C语言参考nn"); printf("int 字节长度:%dn", sizeof(a1)); printf("long int 字节长度:%dn", sizeof(a2)); printf("short int 字节长度:%dn", sizeof(a3)); printf("char 字节长度:%dn", sizeof(a4)); printf("float 字节长度:%dn", sizeof(a5)); printf("double 字节长度:%dn", sizeof(a6)); printf("n"); printf("char ba[7]; sizeof(ba) = %dn", sizeof(ba)); printf("char *pba=ba; sizeof(pba) = %dn", sizeof(pba)); printf("char *pba1; sizeof(pba1) = %dn", sizeof(pba1)); printf("n"); printf("short int bb[3]; sizeof(bb) = %dn", sizeof(bb)); printf("short int *pbb=bb; sizeof(pbb) = %dn", sizeof(pbb)); printf("short int *pbb1; sizeof(pbb1) = %dn", sizeof(pbb1)); printf("n"); printf("Test1TypeS sc1; 默认字节对齐 sizeof(sc1) = %dn", sizeof(sc1)); printf("Test2TypeS sc2; 1 个字节对齐 sizeof(sc2) = %dn", sizeof(sc2)); printf("Test3TypeS sc3 = {0, 0, cc_buf}; 1 个字节对齐 sizeof(sc3) = %dn", sizeof(sc3)); printf("short int cc_buf[3]; sc3.pcc = cc_buf; sizeof(sc3.pcc) = %dn", sizeof(sc3.pcc)); }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)