字符串长度用 strlen() 测定。
sizeof() 是 “运算符”,计算后面的 类型 或 变量 占据的内存(以字节为单位)。
例:
sizeof(unsigned int) 得 4
sizeof(BB->buf); BB->buf 对象是 char buf[100]; 所以得 100
sizeof(PP); char *PP; PP 是指针,等同 一个 unsigned int 地址,所以得 4。
为什么应该是4啊
你取的是buf的size啊 buf是个char数组 你这样用取的是数组的长度
指针是一个很重要的概念,它记录了另一个对象的地址。既然是来存放地址的,那么它当然等于计算机内部地址总线的宽度。所以在32位计算机中,一个指针变量的返回值必定是4。
BB是指针变量,但BB->buf不是。
因为buf后面其实还有一个\0结尾,这也算一个字节,所以是结果是4.
你这个buf不在同一个语句快中肯定是不一样的结果啊,前面的结果是4应为初始化时候赋值为buf,分来4个字节,后面的buf是直接分给了100个字节的,这个不奇怪吧……用程序测试,相信结果就好