关于C语言的sizeof探秘
来源:互联网 发布:mysql面试基本语句 编辑:程序博客网 时间:2024/06/02 19:48
今晚跟D探讨了c程序的类型大小问题,有点收获,现在总结(并附带问题):
1. 我们常说的“64位机”到底是指“64位寻址”(即地址总线宽度为64bit)还是说数据总线的宽度为64bit?
2. 有c语言中,char 类型占1 个byte, int 占 4个byte, long 和 float 也是4个byte, double 占8个 byte, 而指针,无论是什么类型的指针,都只占4 个byte(4*8=32bit), 因为指针是存放地址,而32位机中,地址宽度为32位,所以指针的宽度是相应的32bit.
3. 在机上写了些程序, 发现了几个关于sizeof的有趣的特性:
输出结果是:
Only_chars: 5
Int_and_char: 12
Double_and_char: 16
结果表明,
1. 类定义中的数据类型会被分配内存,分配的单元长度由类中最宽的数据类型决定,
例如,在Only_chars类中最宽的类型为 char, 宽度为1 byte, 所以以1为单位分配了5个;
而在Int_and_char类中, 最宽的类型为 int, 宽度为4 byte, 第一个数据成员 char c1虽然为char, 但依旧分配了4个,第三个char类型的数据成员也是这样, 所以加上第二个int数据成员,总共分配了12byte.
在Double_and_char类中, 最宽的类型为 double, 宽度为8 byte, 所以即使当中的int类型的数据成员, 编译器也硬是分了8个byte给它(好浪费啊!)
2. 函数成员不占内存空间。
3. 分配内存与数据成员声明的次序有关!
如果将 Int_and_char 类中的 数据成员调换顺序:
输出结果会是
Int_and_char: 8
!!!!!
如此说来,为了节省内存, 在声明类中的数据成员时,最好把相同类型的数据都集中在一起声明!!
- 关于C语言的sizeof探秘
- 关于c语言的sizeof
- C语言 关于sizeof与typedef的解释
- C语言中关于sizeof和strlen的区别
- 关于c语言字符串中sizeof指针的问题
- C语言 sizeof的用法
- 理解c语言的sizeof
- 关于C语言中的Sizeof()运算符
- sizeof不是函数,C语言中sizeof的陷阱
- C语言指针声明探秘
- C语言指针声明探秘
- C语言指针声明探秘
- C语言里的sizeof 辨析
- C语言中sizeof()的用法
- C语言中sizeof的用法
- C语言:strlen与sizeof的区别
- C语言sizeof 与 strlen的比较
- C语言的sizeof和strlen
- SVN局域网服务器简单配置及使用方法
- Single Sign-On
- LAMP转帖 最新版PHP+MySQL编程开发经典书籍
- JDOM 操作XML
- Silverlight中的Grid布局方式
- 关于C语言的sizeof探秘
- Fedora系统SVN服务器搭建
- global+ctags+taglist.vim(:TlistToggle)+vimExplorer.vim搭配使用
- Java Heap sapce 与 Java PermGen space
- hello
- ORM
- Proteus AT89C51+LCD1602 仿真及烧制运行
- 刚毕业员工职场二三事
- 四种寻路算法并比较