您的位置:首页 > 其它

关于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正确。

解释:
int
c:16;
位域是指信息在存储时,并不需要占用一个完整的字节,
而只需占几个或一个二进制位。


详细介绍参考网页http://www.cnblogs.com/chengxin1982/archive/2009/01/13/1374575.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: