字符串中sizeof和strlen的区别,以及'\0'与NULL的区别
2015-05-22 11:45
253 查看
程序
#include<iostream> #include<string.h> using namespace std; int main() { char ss[]="0123456789"; cout<<strlen(ss)<<endl; cout<<sizeof(ss)<<endl; for(int i=0;i<strlen(ss);i++) { cout<<ss[i] <<endl; } cout<<'\0'<<endl; cout<<NULL<<endl; return 0; }
运行结果
从中可以发现:
strlen(ss)的结果为10,而sizeof(ss)的结果却是11,这是为什么呢?
原因是当用字符串给字符数组赋值时,字符数组默认在其末尾加上结束标志,也就是’\0’,即字符数组的最后一个字符为’\0’。strlen()函数计算到结束标志的前一个字符,在这里是’9’,所以结果为10;而sizeof()则计算到结束标志,所以结果为10+1=11。
strlen()函数的实现:
int strlen(char s[]) { int num=0; int i=0; while(s[i]!='\0') { num++; i++; } return num; }
打印’\0’时输出为空,而打印NULL却输出为0。后者是因为NULL在C++中值定义为0,但前者我就不知道了,哪位大神可以告诉我
相关文章推荐
- 空字符串、'\0'、0与NULL的区别以及数组清零的特点分析
- char字符串数组与string之间的转换,以及sizeof,strlen,length的区别
- 字符串和字符数组的区别以及sizeof和strlen的区别
- C语言中strlen()函数和sizeof()函数区别[关于字符串长度]
- NULL和0以及'\0'
- JAVA中isEmpty和null以及""的区别
- NULL, '\0',0 '0'的区别
- NULL, '\0',0 '0'的区别
- 字符串中sizeof 和 strlen 的区别
- Sizeof与strlen区别以及用法
- Oracle 数据库查询条件null和空字符串''的区别 (不积跬步,无以至千里)
- string.empty,""以及null的区别
- C/C++中字符串数组及strlen()和sizeof()区别
- C基础 对字符串数组的sizeof和strlen的区别
- php扩展开发笔记(9)sizeof 和 strlen 遇到空字符 '\0' 的问题
- strlen与sizeof区别(转载)以及struct,union的sizeof内存对齐等问题
- String中的null,"",以及String s;等等的区别详解
- C中 字符数组和字符串以及strlen 和sizeof
- sizeof 和 strlen区别
- C/C++中字符串长度strlen()/sizeof()区别