C++中sizeof和strlen
来源:互联网 发布:淘宝千人千面是什么 编辑:程序博客网 时间:2024/06/07 12:24
sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。
strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含'\0')。
概念大概都很熟悉,但是碰到下面的题目很多人可能不能全对。
牛客网上例题:
32位系统上
sizeof(c1),strlen(c1),sizeof(c2),strlen(c2)值分别是 1 2 3 4 。
1
2
char
c1[]={
'a'
,
'b'
,
'\0'
,
'd'
,
'e'
};
char
c2[]=
"hello"
;
分析:
字符数组c1有点特殊,里面包含一个字符串结束符‘\0’。
对字符数组,有以下几种定义方法:
1) char str[]="12345";
或给字符串加上大括号:char str[]={"12345"};
这种方法定义时,系统会自动在字符串的末尾加上字符串结束符,即 ‘\0’,
2) char str[10]={'1','2','3','4','5'};
这种方法定义时,系统会自动从未初始化的元素开始,将之后的元素赋为\0,如上面的数组str中的元素实际上是:'1','2','3','4','5','\0','\0','\0','\0','\0'
3) char str[]={'1','2','3','4','5'};
这种方法定义时,系统不会自动在字符串的末尾加上字符串结束符;
1) char str[]="12345";
或给字符串加上大括号:char str[]={"12345"};
这种方法定义时,系统会自动在字符串的末尾加上字符串结束符,即 ‘\0’,
2) char str[10]={'1','2','3','4','5'};
这种方法定义时,系统会自动从未初始化的元素开始,将之后的元素赋为\0,如上面的数组str中的元素实际上是:'1','2','3','4','5','\0','\0','\0','\0','\0'
3) char str[]={'1','2','3','4','5'};
这种方法定义时,系统不会自动在字符串的末尾加上字符串结束符;
此时用sizeof()函数可以正确求出其所占的内存大小;但用strlen()函数不能正确求出其长度,因为strlen是通过\0判断字符串结束的。
32位系统上
sizeof(c1),strlen(c1),sizeof(c2),strlen(c2)值分别是5、2、6、5。
1
2
char
c1[]={
'a'
,
'b'
,
'\0'
,
'd'
,
'e'
};
char
c2[]=
"hello"
;
阅读全文
1 0
- C 字符串中sizeof() 和 strlen()
- sizeof和strlen【C/C++】
- C语言sizeof和strlen
- C语言sizeof和strlen
- C中字符串和字符,strlen和sizeof()
- C中 字符数组和字符串以及strlen 和sizeof
- c语言中strlen 和 sizeof的区别
- C语言中sizeof和strlen的区别
- C/C++中如何区分strlen和sizeof
- c语言中sizeof 和strlen的用法
- C语言中strlen()和sizeof()的区别
- C/C++中strlen和sizeof的深度认识
- C语言中sizeof和strlen的区别与联系
- C语言中关于sizeof和strlen的区别
- c语言中sizeof()和strlen()的区别
- C/C++中字符串数组及strlen()和sizeof()区别
- c/c++中sizeof()、strlen()、length()、size()详解和区别
- C中strlen和sizeof的区别 详解
- Java-装饰者模式
- Java-反射机制
- Java-内省机制
- ajax输出到前台乱码
- H.264 与 H.265
- C++中sizeof和strlen
- 线程池ThreadPool与Application.DoEvents()
- 如何使用数组参数
- 在STM8L上实现IAP(In Application Programming)
- 把uuid加入DataFrame中并存入SQLite3数据库
- epoll实现echo server和client
- 未将对象引用设置到对象的实例 问题原因总结
- Hibernate Validator注解大全
- JSP的9大内置对象和4个作用域