strlen()与sizeof
2016-03-16 15:56
459 查看
c语言没有string类型,字符串的处理使用的是char数组
c会默认在字符串的尾部增加一个
然而获取到的这个字符数并不包含尾部被自动追加的
sizeof获取的是c或者程序员为这个具体量分配了多大的空间(字节数)
以字符串,数组char举例:
声明了一个20大小的字符串:
那么
而
输出结果为:
c会默认在字符串的尾部增加一个
'\0',也叫空字符(用来标记字符串的结束),所以字符串真正在内存中占用的字节数会比字符串的字符数多1.
strlen()
我们使用strlen()方法可以获取字符串的长度,也就是包含多少个字符数然而获取到的这个字符数并不包含尾部被自动追加的
'\0'空字符
sizeof
sizeof 这并不是一个方法,而是一个关键字,用来获得类型的大小,或某个量的大小,这里只讨论获取具体量的大小sizeof获取的是c或者程序员为这个具体量分配了多大的空间(字节数)
以字符串,数组char举例:
声明了一个20大小的字符串:
char name[20]; name = jack;
那么
sizeof name获得的大小就是20,而不是
jack的字符数4,也不是真是占用内存的字节数5
而
strlen(name),方法获得的大小则是4,而不是5或者20
测试源码
#include <stdio.h> #include <string.h> #define TEST "i am jack" int main(void) { char name[20]; printf("type your name:\n"); scanf("%s",name); printf("name is :%s\n", name); printf("sizeof name is : %ld\n", sizeof name); printf("strlen name is : %ld\n", strlen(name)); printf("\n"); printf("sizeof TEST is : %ld\n", sizeof TEST); printf("strlen TEST is : %ld\n", strlen(TEST)); return 0; }
输出结果为:
type your name: jack name is :jack sizeof name is : 20 strlen name is : 4 sizeof TEST is : 10 strlen TEST is : 9
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- android string.xml文件中的整型和string型代替
- Android java 与 javascript互访(相互调用)的方法例子
- 如何组织构建多文件 C 语言程序(二)
- 数据库链接字符串查询网站
- android上改变listView的选中颜色
- String.intern
- 如何写好 C main 函数
- Prototype源码浅析 String部分(二)
- Flex字符串比较 还有Flex字符串操作
- Ruby中的String对象学习笔记
- Ruby中创建字符串的一些技巧小结
- ASP下经常用的字符串等函数参考资料
- 将字符串小写转大写并延时输出的批处理代码
- 将字符串转换成System.Drawing.Color类型的方法
- Lua和C语言的交互详解
- Lua源码中字符串类型的实现
- Lua性能优化技巧(四):关于字符串
- 字符串聚合函数(去除重复值)
- Ruby中的字符串编写示例