一个牛X的例子来计算结构体的sizeof

转载 2012年03月21日 22:47:43
 0 4 8
0 4 8
0 4 6
sizeof(E) = 16
sizeof(F) = 16
sizeof(T) = 14
sizeof(struct_taga) = 4
sizeof(struct_tagb) = 3
sizeof(struct_tagc) = 4
 
 --------------
 #include <stddef.h>
 #include <stdio.h>
 
 //package size defaults to 8
 struct E
 {   
     int i;   // size 4   
     short j;   // size 2   
     double k;   // size 8
 };
 
 #pragma pack(4)
 struct F
 {
     int i;   
     short j;   
     double k;
 };
 
 #pragma pack(2)
 struct T 
 {
     int i;   
     short j;   
     double k;
 };
 
 struct struct_taga
 {
     char i;
     short j;
 };
 
 #pragma pack(push, r2, 1)
 struct struct_tagb
 {
     char i;
     short j;
 };
 
 #pragma pack(push, 8)
 struct struct_tagc
 {
     char i;
     short j;
 };
 
 
 void main() 
 {  
     printf("%d ", offsetof(E, i));   
     printf("%d ", offsetof(E, j));
     printf("%d\n", offsetof(E, k));
     printf("%d ", offsetof(F, i));
     printf("%d ", offsetof(F, j)); 
     printf("%d\n", offsetof(F, k));
     printf("%d ", offsetof(T, i));
     printf("%d ", offsetof(T, j)); 
     printf("%d\n", offsetof(T, k));
 
     printf("sizeof(E) = %d\n", sizeof(E));
     printf("sizeof(F) = %d\n", sizeof(F));
     printf("sizeof(T) = %d\n", sizeof(T));
 
     printf("sizeof(struct_taga) = %d\n", sizeof(struct_taga));
     printf("sizeof(struct_tagb) = %d\n", sizeof(struct_tagb));
     printf("sizeof(struct_tagc) = %d\n", sizeof(struct_tagc));
 }

sizeof求结构体大小问题详解

运算符sizeof可以计算出给定类型的大小,对于32位系统来说,sizeof(char) = 1; sizeof(int) = 4。基本数据类型的大小很好计算,我们来看一下如何计算构造数据类型的大小。...
  • u012169230
  • u012169230
  • 2016年04月22日 14:21
  • 535

sizeof()计算数组结构体类大小长度

sizeof()是一个操作符,用来计算长度的,下面程序详细解释了数组,字符,结构体,类等的长度计算方法 // sizeof.cpp : Defines the entry point for the ...
  • zhangjikuan
  • zhangjikuan
  • 2015年06月27日 14:13
  • 3726

C语言sizeof求结构体大小问题汇总

可以说一直被各类结构体大小问题说困扰,花了大半天时间查了一下资料,现在整理汇总一下。 sizeof:C语言中判断数据类型或者表达式长度符;不是一个函数,字节数的计算在程序编译时进行,而不是在程序执行的...
  • iam_lain
  • iam_lain
  • 2015年07月05日 21:13
  • 4181

sizeof的详尽计算结构体字节数方法

sizeof的详尽计算结构体字节数方法   本文主要包括二个部分,第一部分重点介绍在VC中,怎么样采用sizeof来求结构的大小,以及容易出现的问题,并给出解决问题的方法,第二部分总...
  • chenglove1314
  • chenglove1314
  • 2014年09月16日 15:25
  • 824

C语言中sizeof求结构体大小(让你真正了解结构体成员在内存中的分布情况)

今天我在写程序的时候我发现当一个结构体里面的成员变量相同的时候但是顺序不同的时候,所消耗的内存大小是不一样的, 因为我对内存的消耗很敏感,我想它具体是怎么用的 ,于是我具体看了下关于结构体成员在内存...
  • yyfwd
  • yyfwd
  • 2016年03月14日 15:50
  • 2438

sizeof计算结构体大小(字节对齐)

引言:sizeof计算结构体的大小经常出现在笔试题中,接下来是对它的一些总结 1.计算结构体大小的准则 数据类型 32位机大小(字节) 64位机大小(字节) char 1 1 ...
  • u011471286
  • u011471286
  • 2016年04月03日 15:06
  • 1344

sizeof&结构体、共同体大小的计算方法笔记

一.sizeof,是个运算符不是一个函数,字节数的计算在程序编译时进行,而不是在程序执行的过程中才计算出来。 1.sizeof操作符的结果的类型为size_t,在头文件中使用typedef重新定...
  • handsome10221
  • handsome10221
  • 2013年11月12日 21:51
  • 1158

深度解析求结构体sizeof问题

运算符sizeof可以计算出给定类型的大小,对于32位系统来说,sizeof(char) = 1; sizeof(int) = 4。基本数据类型的大小很好计算,我们来看一下如何计算构造数据类型的大小。...
  • ls5718
  • ls5718
  • 2016年04月21日 14:08
  • 679

使用sizeof计算联合体的大小

#include using namespace std; union u { double a ; int b ; }; union u2 { char a[13] ; in...
  • perfectguyipeng
  • perfectguyipeng
  • 2017年04月08日 22:16
  • 374

sizeof浅析(一)——求结构体大小

运算符sizeof可以计算出给定类型的大小,对于32位系统来说,sizeof(char) = 1; sizeof(int) = 4。基本数据类型的大小很好计算,我们来看一下如何计算构造数据类型的大小。...
  • szchtx
  • szchtx
  • 2013年04月14日 22:34
  • 23360
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个牛X的例子来计算结构体的sizeof
举报原因:
原因补充:

(最多只允许输入30个字)