1.sizeof的用法,返回值的类型是size_t,计算的是数据所占内存的空间,用字节表示
(1)用于变量的时候可以加括号或者不加括号,但建议加括号 例如 sizeof(a)
(2) 用于数据类型必须要用括号, sizeof(int)
(3)计算对象的大小是先转化成对象的类型在进行计算
(4)可以对函数调用求值,其结果是函数返回类型的大小,不能对函数名进行计算,无返回值的函数不能参加计算
(5)可以对表达式进行求值,实际上是根据表达式的最终结果类型来确定大小。
(6)结构体中的位域成员不能被计算sizeof值
2.strlen的参数时c风格的字符串,主要用来计算字符数组的长度,不区分参数类型是指针还是数组类型,以‘\0’为结束标志,且不将其计算在内。而sizeof在计算字符数组的长度时,会将占用的‘\0’计算在内。
char dog[] = "wang\0miao";
char* cat = "wang\0miao";
char dog2[] = "wangmiao";
char* cat2 = "wangmiao";
cout << sizeof(dog) << " "<<dog<<endl;//10
cout << sizeof(cat) << " "<< cat << endl;//4
cout << sizeof(dog2) << " " << dog2 << endl;//9
cout << sizeof(cat2) << " " << cat2 << endl;//4
cout << strlen(dog) << " "<<dog<<endl;//4
cout << strlen(cat) << " " << cat << endl;//4
cout << strlen(dog2) << " " << dog2 << endl;//8
cout << strlen(cat2) << " " << cat2 << endl;//8