sizeof 操作符

sizeof 操作符的作用是返回一个对象或类型名的长度,返回值的类型为size_t,长度的单位是字节。size_t 表达式的结果是编译时常量,该操作符有以下三种语法形式:

sizeof (type name);

sizeof (expr);

sizeof expr;

将 sizeof 应用在表达式 expr 上,将获得该表达式的结果的类型长度:

Sales_item data, *p;
sizeof(Sales_item); //存储Sales_item类型对象所占的空间大小
sizeof data;           //data的类型大小,即sizeof(Sales_item)
sizeof p;         //指针所占的空间大小
sizeof *p;        //p所指类型的空间大小即sizeof(Sales_item)

将 sizeof 用于 expr 时, 并没有计算表达式 expr 的值。 特别是在 sizeof,*p 中,指针 p 可以持有一个无效地址,因为不需要对 p 做解引用操作。

使用 sizeof 的结果部分地依赖所涉及的类型:

对 char 类型或值为 char 类型的表达式做 sizeof 操作保证得 1。

对引用类型做 sizeof 操作将返回存放此引用类型对象所需的内在空间大小。

对指针做 sizeof 操作将返回存放指针所需的内在大小;注意,如果要获取该指针所指向对象的大小,则必须对指针进行引用。

对数组做 sizeof 操作等效于将对其元素类型做 sizeof 操作的结果乘上数组元素的个数。

因为 sizeof 返回整个数组在内存中的存储长度,所以用 sizeof 数组的结果除以 sizeof 其元素类型的结果,即可求出数组元素的个数:

// sizeof(ia)/sizeof(*ia) returns the number of elements in ia
int sz = sizeof(ia)/sizeof(*ia); 
posted @ 2018-04-29 17:55  刘-皇叔  阅读(208)  评论(0编辑  收藏  举报