【C++】sizeof()、strlen()、length()\以及size()用法区别
四种函数对比
- sizeof()
- strlen()
- strlen(char*)
- size()
sizeof()
参数:可以是数组、指针、类型、对象等
功能:获得能够保证所能容纳的最大对象的字节数大小(理解为整体的内存空间的大小计算)
strlen()
参数是字符类型的指针(char*)
功能:返回字符串的长度,代表该字符串的第一个地址开始遍历,遇到结尾字符返回的长度大小(所存储数据的大小)
strlen(char*)
功能:返回的是字符串的实际长度
size()
功能:可以获得字符串的长度
strlen(str)和str.length()和str.size()都可以求字符串长度。
其中str.length()和str.size()是用于求string类对象的成员函数
strlen(str)是用于求字符数组的长度,其参数是char*。
1)char* ss = “0123456789”;
计算字符指针的大小sizeof(ss)为4,ss是指向字符串常量的字符指针,sizeof 获得的是指针所占的空间,则为4
计算字符指针首元素类型大小sizeof(*ss)为1,*ss是第一个char字符,则为1
2)char ss[] = “0123456789”;
计算字符数组的分配内存的空间大小sizeof(ss)为11,ss是数组,计算到’\0’位置,因此是(10+1)
sizeof(*ss)为1,*ss是第一个字符
3)char ss[100] = “0123456789”;
sizeof(ss)为100,ss表示在内存中预分配的大小,100*1
计算字符数组(字符指针)其存储内容所占空间的大小strlen(ss)为10,它的内部实现用一个循环计算字符串的长度,直到’\0’为止。