关于sizeof的用法总结。
2015-07-30 10:57
309 查看
sizeof()功能:计算数据空间的字节数
1.与strlen()比较
strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素。
而sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示。
2.指针与静态数组的sizeof操作
指针均可看为变量类型的一种。所有指针变量的sizeof 操作结果均为4。在64位系统下,指针变量的sizeof操作结果为8.
下面介绍一个64位系统下的关于sizeof的选择题。
在64位系统以及64位编译器下,,以下描述正确的是
A sizeof(p)
== 24 Bsizeof(*p) == 24 C sizeof(p->a)
== 1 D sizeof(p->e) == 4
解析:
A sizeof(p)=8字节,因为p为指针。
C sizeof(p->a)=1字节,因为char在32位或64位系统中都是1个字节
Dsizeof(p->e)=8字节,因为double 是8个字节
B涉及到结构体的对齐问题使sizeof变得负责,思路:先考虑结构体的对界(对齐的上界)最大是double 8字节,然后按照结构体的字段顺序开始:
a(char) 1字节,补齐7字节
d(指针) 8字节,
b(int)4字节,c(位域2字节),补齐2字节
e(double)8字节
所以,一共4*8字节=32字节,答案只有C正确。
解释:
而只需占几个或一个二进制位。
详细介绍参考网页http://www.cnblogs.com/chengxin1982/archive/2009/01/13/1374575.html
1.与strlen()比较
strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素。
而sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示。
2.指针与静态数组的sizeof操作
指针均可看为变量类型的一种。所有指针变量的sizeof 操作结果均为4。在64位系统下,指针变量的sizeof操作结果为8.
下面介绍一个64位系统下的关于sizeof的选择题。
在64位系统以及64位编译器下,,以下描述正确的是
A sizeof(p)
== 24 Bsizeof(*p) == 24 C sizeof(p->a)
== 1 D sizeof(p->e) == 4
解析:
A sizeof(p)=8字节,因为p为指针。
C sizeof(p->a)=1字节,因为char在32位或64位系统中都是1个字节
Dsizeof(p->e)=8字节,因为double 是8个字节
B涉及到结构体的对齐问题使sizeof变得负责,思路:先考虑结构体的对界(对齐的上界)最大是double 8字节,然后按照结构体的字段顺序开始:
a(char) 1字节,补齐7字节
d(指针) 8字节,
b(int)4字节,c(位域2字节),补齐2字节
e(double)8字节
所以,一共4*8字节=32字节,答案只有C正确。
解释:
int
c:16;位域是指信息在存储时,并不需要占用一个完整的字节,
而只需占几个或一个二进制位。
详细介绍参考网页http://www.cnblogs.com/chengxin1982/archive/2009/01/13/1374575.html
相关文章推荐
- extjs Grid的表头要跟着需求刷新
- envi几何校正
- 应用解决告诉你什么时候该用ajax
- ORACLE directory 目录--转载
- C++优先队列的用法与求集合的交集并集差集
- 1.1-查看系统负载
- openfire学习2
- 与MQ通讯的完整JAVA程序
- 线段树模板及专题合集-----不断更新中
- 透明代理、匿名代理、混淆代理、高匿代理有什么区别?
- MBTI
- AF上传图片
- 前端的几个好用软件
- 语音特征参数MFCC提取过程详解
- ARM指令集一
- 基于Java的打包jar、war、ear包的作用与区别详解
- ibatIS中的isNotNull、isEqual、isEmpty用法
- js插件收藏&&开发辅助工具
- UILabel常用属性小结
- 医学影像调窗技术