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、

 

posted @ 2019-01-18 20:45  kuaqi  阅读(180)  评论(0编辑  收藏  举报