bycj.net
当前位置:首页 >> C 中sizEoF和strlEn >>

C 中sizEoF和strlEn

strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\0'停止. char aa[10];cout<<strlen(aa)<<endl; //结果是不定的 char

strlen 是返回字符串的长度.而sizeof,却是用来取得变量或类型所占用的内存大小的.这个a数组的字符串长度为4(末尾的\0是不计入字符串长度的),但a是10个单位的char型,它占用的内存空间是10*sizeof(char),为10. sizeof 返回的数量的单位是byte.

sizeof 计算的是数据在内存中存放的长度,单位是“字节”,可以对任何数据类型做运算,而且它是一个运算符(和+、-、*、\类似);当对字符串计算时,包含末尾的"\0";当对字符数组操作时,返回的是数组的总的长度,也就是当把数组作

sizeof运算符计算的是操作数类型的大小,只是数组会乘以长度而已,和传入的具体内容无关.要强行输出5的话那就sizeof("nike")吧……要强行可以计算补了0长度的那就strlen+1

通俗一点,简单明了一点来讲,二者都可以用来取字符串长度,不同之处在于sizeof取到的字符串长度包括字符串结束标记'\0',而strlen得到的长度则不包括'\0',而'\0'在字符串中是不显示的,所以sizeof得到的字符串长度要比strlen得到的字符串长度大1. 纯手打,希望对你有帮助……

strlen:是C标准库中的字符串函数,用于统计字符的个数. sizeof:是C语言中的运算符,确切的说是一个编译时运算符,用于统计类型或者变量所占的内存字节数.示例,以32位系统为例.char *str = "hello"; strlen(str); //它的值是5,因为hello这个字符串有5个字符 sizeof(str); //它的值是4,因为char *是一个指针类型,它占4个字节.sizeof("hello"); //它的值是5,是因为hello有5个字符,每一个字符占1个字节.int a[2] = {0}; sizeof(a); //它的值是8,因为a中有2个int型变量,每个int型占4个字节,所以8字节

可见到变量尤其是数组声明的元素个数时 ;)为4,因此sizeof("abc&quot, strlen(&quot,sizeof求出的是该数组分配的字节数(包括字符串),但是strlen只能求出一维字符数组(包括字符串)第一个'\0'的元素前的字节数

问题1: 不是字符串存储在一个字节里而是char* ss指向的是字符串的第一个字节,而你sizeof()内的参数正好是指针所指的那块空间的地址所以是一个字节 问题2: 在c语言中,strlen()的形参是指针,而你的实参s3中并没有结束符\0所以指针不会认为结束,所以长度不能确定

明显是c语言的,strlen指字符的长度 sizeof指文件或者数据占的内存(字节)

sizeof()测得各种数据类型的长度.比如结构体、整、实型变量,等等等等,各种变量都可以.它测得的是你定义的数据类型的大小.比如说你上边定义的char b[10],你定义的数组长度是10.,所以测得的长度就是10.它经常用于开辟动态内存.但是strlen()函数只能用来测定字符串的实际长度,是字符串.而不能是其他的数据类型.测的是字符串实际的长度,而不是定义的长度.意思就是说有几个字符,测出来的就是几.你的那个char a[]="movie",字符串末尾有个字符串结束标志'\0',所以测出来的是6.希望我的回答能帮你解决谜团、

网站首页 | 网站地图
All rights reserved Powered by www.bycj.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com