关于strlen()和sizeof的题目
来源:互联网 发布:软件接口开发 编辑:程序博客网 时间:2024/05/22 00:38
1、char test[] = {0x01,0x02,0x03};int a = strlen(test);int b = sizeof(test);2、char test[] = {0x01,0x00,0x03};int a = strlen(test);int b = sizeof(test);3、char test[20] = {0x01,0x02,0x03};int a = strlen(test);int b = sizeof(test);4、char test[20] = {0x01,0x00,0x03};int a = strlen(test);int b = sizeof(test);//以上题目中的a、b分别是多少,
strlen() 返回字符串长度, sizeof 返回变量所占内存字节数
strlen 判断字符串结束的标志是指针走到值为 '\000' 的地址处,然后返回长度
sizeof 是在编译时就决定了变量所占的内存大小,它肯定是一个定值
'\000' 在十六进制里的表示就是 0x00
第一题:
a:
因为 test字符数组里没有 0x00 或者 '\000',所以返回一个随机数,我是通过gdb调试发现的,而且我让周围的朋友运行了一下,也发现不同的机器,跑出来的 strlen(test) 的值是不一样的,因为在test[]里没有'\000',所以指针会在内存空间里一直向后走,直到碰到'\000'时返回
a的值是个随机数,每台机器都不一样,不是个定值
b:
test数组指向的内存空间是3个字节,所以返回3
b=3
第二题:
a:
因为test字符数组第二个字符就是0x00,也就是'\000',所以,运行strlen的时候,运行到第二个字符时就返回了
a=1
b:
跟第一问的b相同
b=3
第三题:
a:
定义了一个长度为20的字符数组test, char test[20] = {0x01, 0x02, 0x03};
这样定义的结果是,test数组前三位是十六进制的 0x01, 0x02, 0x03,后面的17个数字就都是0x00
所以,strlen运行时碰到第一个0x00,也就是第4位数字的时候就返回了
a=3
b:
因为声明时就定义了这个字符数组的长度是20,所以b=20
第四题:
a:
跟第二题的原理相同
a=1
b:
跟第三题的原理相同
b=20
- 关于strlen()和sizeof的题目
- 关于sizeof 和strlen
- 关于sizeof和strlen !!!
- 关于sizeof和strlen
- 关于sizeof和strlen !!!
- 关于strlen 和 sizeof
- 关于sizeof和strlen !!!
- 关于sizeof和strlen
- 关于strlen和sizeof
- 关于sizeof和strlen的区别
- 关于strlen和sizeof的陷阱
- 关于sizeof和strlen的区别
- 关于sizeof 和 strlen的区别
- 关于sizeof 和 strlen的区别
- 关于sizeof和strlen的使用
- 关于sizeof 和strlen 的用法
- 关于sizeof和strlen的区别
- 关于strlen和sizeof的区别
- A-Z,a-z,0-9的unicode编码表
- java调用windows/Linux/Unix 命令行执行命令的方法--调用ImageMagick的合并图形的命令
- sqlserver日期函数
- tftpd 安装
- Linux中Perl模块安装方法
- 关于strlen()和sizeof的题目
- Main函数参数argc,argv说明
- linux编程1: makefile的编写
- 统计自然语言处理——n元语法(马尔可夫模型)小结
- JavaScript使用方法和技巧大全
- UNICODE十六进制数组转成中英文
- Android Shape
- Oracle 生成 GUID 类型
- throws与throw