sizeof关键字(运算符)

sizeof的作用:
1.计算某个类型的字节大小:
比如sizeof(int)、sizeof(double)其值取决于计算机具体实现(一般):
一般类型大小
注意(当sizeof用于结构体(含非数组成员)时):
struct book1
{
double value;
int index;
char in;
};
struct book2
{
double value;
int index;
};
当sizeof这两个结构时,你会发现值相等:原因就是编译器会对结构进行对齐:其大小必须是最大成员类型大小的整数倍(如果加上数组,则成员也指数组中的元素:而不是整个数组):
struct book3
{
char name[2];
double value;
};
struct book4
{
char name[8];
double value;
};
你也会发现这两个结构大小相等(关于内存是如何分配的,自行研究哈,下面还是说sizeof吧)。
2.计算某个变量的大小(重要):
注意:首先要明确sizeof是关键字,不是函数
也就是说sizeof(某类型)或sizeof(某变量)的大小是在编译时确定的,这就衍生了一个问题:
假如:
有定义:
int num[3];
int * p;
p = num;
如果分别sizeof(num)与sizeof§
结果分别是12与4,你可能会疑问num不是指的是数组的地址吗?
这就是带有[]声明数组与动态分配空间数组的不同,[]是在编译的时候分配了空间,sizeof是编译的时候去计算大小,所以应是12,而即使你声明了一个指针,并动态给它分配空间,那sizeof(指针名)只是一个普通指针所占的4个字节。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值