sizeof关键字(运算符)

sizeof的作用:
1.计算某个类型的字节大小:
比如sizeof(int)、sizeof(double)其值取决于计算机具体实现(一般):
sizeof关键字(运算符)_第1张图片
注意(当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个字节。

你可能感兴趣的:(sizeof关键字(运算符))