sizeof判断指针长度

1、sizeof计算的都是类型的长度。如果是对象,则转换成类型,再计算类型的长度。在32位系统中。指针类型是32位,4个字节。所以对任何指针用sizeof结果都是4;

char ss[] = "0123456789";
sizeof(ss) 结果 11 ===》ss是数组,计算到\0位置,因此是10+1
sizeof(*ss) 结果 1 ===》*ss是第一个字符

这里为什么sizeof(*ss)是1不是4呢?

2、“sizeof操作符不能用于函数类型、不完全类型或位字段”
位字段是什么呢?

谢谢!
但不是说“指针类型是32位,4个字节”,那*ss 是1个字符,还是1个字节?

一个字符的长度是 1 byte, *ss 是1个字符,所以 sizeof(*ss)是1。

sizeof 是运算符,不是函数。

位字段是一种结构,描述 一个一个bit, 1个byte有8个bit(2进制数位)。
struct Bit {
unsigned a: 1; /* 1 Bit, 取值范围: 0 - 1 */
unsigned b: 2; /* 2 Bit, 取值范围: 0 - 3 */
unsigned c: 3; /* 3 Bit, 取值范围: 0 - 7 */
unsigned d: 4; /* 4 Bit, 取值范围: 0 - 15 */
}B;
温馨提示:答案为网友推荐,仅供参考
相似回答