黑马程序员技术交流社区
标题:
输出字符串长度
[打印本页]
作者:
夏应斌
时间:
2014-4-26 20:22
标题:
输出字符串长度
本帖最后由 夏应斌 于 2014-4-27 09:26 编辑
在看资料时,纠结一个问题,编程输出字符串长度时,sizeof与strlen有什么区别吗,
作者:
cnchenys
时间:
2014-4-26 20:27
本帖最后由 cnchenys 于 2014-4-26 20:37 编辑
sizeof是返回字符串所占的内存字节数(包括字符串结尾的'\0'),strlen返回的是字符串的字符数(不包括'\0),因为字符串中1字符所占内存是1字节,
所以二者在返回字符串长度值是strlen(c) = sizeof(c)-1
作者:
夏应斌
时间:
2014-4-26 20:35
如果输出的字符串是以"\0"结尾,要求不包括“\0”,计算字符串长度时用strlen比较好吧
作者:
脸皮猴
时间:
2014-4-26 20:35
char a[10] = {'1','2','a'};
printf("%ld",sizeof(a)); // 打印结果等于 10
printf("%ld",strlen(a)); // 打印结果等于 3
复制代码
上面的代码就说明他们有说明区别。
strlen指字符的长度(以'\0'为结束点)
sizeof指文件或者数据占的内存(字节)
作者:
cnchenys
时间:
2014-4-26 20:36
夏应斌 发表于 2014-4-26 20:35
如果输出的字符串是以"\0"结尾,要求不包括“\0”,计算字符串长度时用strlen比较好吧 ...
嗯.是啊
作者:
m573555543
时间:
2014-4-26 20:39
sizeof(...)是运算符
,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。
它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。
sizeof是返回字符串所占的内存字节数(包括字符串结尾的'\0'),
strlen(...)是函数
,要在运行时才能计算。参数必须是字符型指针(char*)。当数组名作为参数传入时,实际上数组就退化成指针了。
它的功能是:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL。返回的长度大小不包括NULL。
strlen返回的是字符串的字符数(不包括'\0',因为'\0'表示空字符)
作者:
李鹏-ios
时间:
2014-4-26 22:04
例如:
char str[10]="01234";
int a=strlen(str); //a=5;
int b=sizeof(str); //b=10;
strlen的结果要在运行的时候才能计算出来,用来计算实际的长度;sizeof用来计算类型占内存的大小。
作者:
gaoxinglei123
时间:
2014-4-26 23:06
sizeof是算符,不是函数。只针对字符串的话,sizeof比strlen大1;但意思完全不一样。sizeof计算的是你这个字符串所占的内存的字节数。而strlen是计算字符串包含的char 的数量。而刚好char占一字节所以sizeof才能计算字符串里的字符数
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2