C++常见避坑指南( 十 )


sizeof 是个操作符 , 可用于任何类型或变量,包括数组、结构体、指针等, 返回的是一个类型或变量所占用的字节数; 在编译时求值,不会对表达式进行求值 。
strlen 是个函数,只能用于以 null 字符结尾的字符串,返回的是一个以 null 字符('')结尾的字符串的长度(不包括 null 字符本身) , 且在运行时才会计算字符串的长度 。
需要注意的是,使用 sizeof 操作符计算数组长度时需要注意数组元素类型的大小 。例如,对于一个 int 类型的数组,使用 sizeof 操作符计算其长度应该为 sizeof(array) / sizeof(int) 。而对于一个字符数组,使用strlen函数计算其长度应该为 strlen(array) 。
char str[] = "hello";char *p = str;此时,用sizeof(str)得到的是6 , 因为hello是5个字符,系统储存的时候会在hello的末尾加上结束标识,一共为6个字符;
而sizeof(p)得到的却是4,它求得的是指针变量p的长度,在32位机器上 , 一个地址都是32位,即4个字节 。
用sizeof(


推荐阅读