sizeof() strlen()
sizeof是运算符,strlen是函数
1) sizeof( type_name ); // sizeof( 类型 );
2) sizeof object; // sizeof 对象
sizeof后,若为类型必须加括弧,若为变量名可以不加括弧。这是因为sizeof是个操作符不是个函数。
1. strlen()
strlen只能用char*做参数,且必须是以''\0''结尾的
当string中含有空字符’\0’,使用strlen()获取string的长度时会被截断,使用成员函数length()和size()可以返回string的真实长度。
string strTest="good";
strTest[2]=0;
strlen[strTest]==>>2;
2、sizeof() 指针与数组
https://blog.csdn.net/Colorful_lights/article/details/79819682
sizeof(数组名):返回数组所有元素占有的内存空间字节数。
sizeof(指针) :返回计算机系统的地址字节数,如果是32位系统,返回4,16位系统返回8。
3、sizeof() strlen() wcslen() 区别
https://blog.csdn.net/hczhiyue/article/details/6248229
strlen返回的是字节数(对中英文不一致,中文占两个字节,不包括'/0')
wcslen返回的是字符数(对中英文一致)
sizeof返回的是字节数(包含'/0',而'/0'在Unicode下也是占两个字节的)
char ch[]="abcd"; sizeof(ch);//5 strlen(ch);//4
4、sizeof
当适用了于一个结构类型时或变量, sizeof 返回实际的指针或变量的大小;
当适用一静态地空间数组, sizeof 归还全部数组的尺寸,例如字符数组的的尺寸;
sizeof 操作符不能返回动态地被分派了的数组或外部的数组的尺寸;
数组做sizeof的参数不退化,传递给strlen就退化为指针了。
sizeof后,若为类型必须加括弧,若为变量名可以不加括弧。这是因为sizeof是个操作符不是个函数。
char Array[20] ="012345"; cout << sizeof(Array) << endl; \\20 \\静态数组 char *p = Array; cout << strlen(p) << endl; cout << sizeof(p) << endl; \\4 \\动态指针
5、