关于C里面 数字0,字符'0',字符串"0",字符串结尾标志符'\0'
来源:互联网 发布:陈建年 知乎 编辑:程序博客网 时间:2024/06/02 14:30
首先对于字符,C语言里主要区分的依据是ascii编码表:
在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机用高电平和低电平分别表示1和0),例如,像a、b、c、d这样的52个字母(包括大写)、以及0、1等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪些二进制数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通信而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了ASCII编码,统一规定了上述常用符号用哪些二进制数来表示。
以上百度百科ASCII http://baike.baidu.com/view/15482.htm
需要明白的是,这里的映射关系式“字符” <-->"数字(编码)",
字符‘0’:
在这个表中,字符零,也就是C中的 ‘0’ 对应的是48,即,字符零在计算机中的存储是48。也就是说以下代码执行结果是48
执行结果: czero = 48
数字0:
数字类型的数据在计算机中存储即是本身,就是0,看这段代码
执行结果: czero != izero
字符串“0”:
字符串“0”,很好理解,相当于存了两个符号,一个是字符‘0’,一个是字符串结尾标志‘\0’,其实存储的十进制数就是数字0
字符串结尾标志‘\0’:
虽然,大家都是这么说的,但其实,这里'\0',中的反斜线 \ 可以当做转义符,其实就是转义符,跟 \\ 表示 \,\' 表示 ' 一样,\0 表示的就是 0,但是别忘记了这里的 \0 是字符类型的,相当于裸0(我自己想的名字==),也就是数字0,数字0对应着哪个字符呢,查看下ASCII表格,发现第一个就是,NULL,这样也好理解了,在读取字符串的时候,末尾是NULL,但是必须有这个NULL,才能告诉编译器字符串结束了。
嗯,就是这样,另外多说一些:
对于memset,
memset(*dst, 0, size) 和 memset(*dst, '\0', size)效果是一样的,但是和memset(*dst, '0', size)不一样。
查看memset的定义:
好吧,还是来自百度百科http://baike.baidu.com/view/982208.htm
第二个本来就是数字啊,数字 0 和 字符'\0' 换成十进制数字都是0,但是字符'0'换算成数字是48,这也就可以理解了。要不做个试验:
这段代码的输出是,一串的222222222222222222222222222,不止10个,
一、输出2是因为,ASCII值50,对应的字符是2
二、输出多余10个2,是因为我们把字符串结尾标志也memset掉了。
嗯,虽然memset一般是用来初始化的,这时,直接用memset(*dst, 0, size)就行。
在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机用高电平和低电平分别表示1和0),例如,像a、b、c、d这样的52个字母(包括大写)、以及0、1等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪些二进制数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通信而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了ASCII编码,统一规定了上述常用符号用哪些二进制数来表示。
以上百度百科ASCII http://baike.baidu.com/view/15482.htm
需要明白的是,这里的映射关系式“字符” <-->"数字(编码)",
字符‘0’:
在这个表中,字符零,也就是C中的 ‘0’ 对应的是48,即,字符零在计算机中的存储是48。也就是说以下代码执行结果是48
- char czero = '0';
- printf("czero = %d\n", czero);
数字0:
数字类型的数据在计算机中存储即是本身,就是0,看这段代码
- int izero = 0;
- if (izero == czero)
- {
- printf("czero = izero\n");
- }
- else
- {
- printf("czero != izero\n");
- }
字符串“0”:
字符串“0”,很好理解,相当于存了两个符号,一个是字符‘0’,一个是字符串结尾标志‘\0’,其实存储的十进制数就是数字0
字符串结尾标志‘\0’:
虽然,大家都是这么说的,但其实,这里'\0',中的反斜线 \ 可以当做转义符,其实就是转义符,跟 \\ 表示 \,\' 表示 ' 一样,\0 表示的就是 0,但是别忘记了这里的 \0 是字符类型的,相当于裸0(我自己想的名字==),也就是数字0,数字0对应着哪个字符呢,查看下ASCII表格,发现第一个就是,NULL,这样也好理解了,在读取字符串的时候,末尾是NULL,但是必须有这个NULL,才能告诉编译器字符串结束了。
嗯,就是这样,另外多说一些:
对于memset,
memset(*dst, 0, size) 和 memset(*dst, '\0', size)效果是一样的,但是和memset(*dst, '0', size)不一样。
查看memset的定义:
oid *memset(void *s, int ch, size_t n);
函数解释:将s中前n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。
memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。
好吧,还是来自百度百科http://baike.baidu.com/view/982208.htm
第二个本来就是数字啊,数字 0 和 字符'\0' 换成十进制数字都是0,但是字符'0'换算成数字是48,这也就可以理解了。要不做个试验:
- char szName[10];
- memset(szName,50, 10)
- printf("szName = %s", szName);
一、输出2是因为,ASCII值50,对应的字符是2
二、输出多余10个2,是因为我们把字符串结尾标志也memset掉了。
嗯,虽然memset一般是用来初始化的,这时,直接用memset(*dst, 0, size)就行。
0
上一篇: const char*, char const*, char*const的区别
下一篇:进程之间不能传递指针。。
相关热门文章
- linux shell 字符串操作(长度...
- shell 字符串为空和长度的判断...
- 关于C语言中的#的用法...
- 教你如何辨别化妆品真假...
- 字符串发送与十六进制发送的区...
- test123
- 编写安全代码——小心有符号数...
- 使用openssl api进行加密解密...
- 一段自己打印自己的c程序...
- sql relay的c++接口
- 如何提高中文域名网站权重呢?...
- windows有发展前景吗
- 谁能够帮我解决LINUX 2.6 10...
- 现在的博客积分不会更新了吗?...
- shell怎么读取网页内容...
给主人留下些什么吧!~~
评论热议
0 0
- 关于C里面 数字0,字符'0',字符串"0",字符串结尾标志符'\0'
- 关于C里面 数字0 ,字符‘0’ ,字符串“0”,字符串结尾标示符‘\0’
- C++ string 字符串 结尾 标志 \0
- 关于C语言中printf输出字符串的问题!字符串须以'\0'作为结尾。
- C++字符串结尾标志
- 关于string类型的字符串是否以\0结尾
- 关于string类型的字符串是否以\0结尾
- 关于string类型的字符串是否以\0结尾
- 关于string类型的字符串是否以\0结尾
- C 的 "%s"对应以'\0'结尾的字符串
- C 的 "%s"对应以'\0'结尾的字符串
- '\0'就是 字符串结束标志
- 字符串结尾‘0’和‘\0’的区别
- 关于字符数组的结束标志'/0'
- 【C基础】空字符'\0'与字符串
- C 去除字符串结尾换行符(去除字符串最后一个字符)
- C Language Study - 编译器如何区分数字0 字符0 字符串结束符 '\0' 还有 空格(space)
- 没有'\0'结尾的字符串输出(0)
- 【c++程序】重载加法运算符operator+
- 折腾二维数组
- const char*, char const*, char*const的区别
- .net学习框架
- 时钟树解析
- 关于C里面 数字0,字符'0',字符串"0",字符串结尾标志符'\0'
- 进程之间不能传递指针。。
- container_of 的的的原理
- svn强制写日志和可以修改历史日志(svn钩子的应用)
- [iOS越狱开发]安装command line tools for Xcodew
- 用Golden Gate实现mysql到mysql的实时复制
- R语言 Error in match.names(clabs, names(xi)) :
- sql语句查询结果合并union all用法
- vmlinuz的命名规则-名字起源
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
洗窗帘设备
卷帘式窗帘
窗帘品牌品牌窗帘
窗帘市场
特殊窗帘
水晶窗帘
窗帘多少
汽车窗帘布
窗帘辅料
活动窗帘
韩式窗帘
窗帘的挂法
普通窗帘
窗帘布报价
海口窗帘
窗帘客厅窗帘
沈阳窗帘
公司窗帘
能不能把窗帘拉开教程
能不能把窗帘拉开
飘窗窗帘怎么装好看
雨落窗帘作品
你能不能把窗帘拉开
窗帘品牌排行
能不能把窗帘拉开素材
能不能把窗帘拉开抖音教程
窗帘安装几种方法图解
窗帘安装方法图解
三室一厅窗帘4000贵吗
窗帘颜色搭配口诀
窗帘杆安装方法图解
新窗帘一般放多久才没甲醛
窗帘盒好还是罗马杆好
卧室窗帘颜色
客厅装什么窗帘好看
窗帘什么材质好
窗帘什么牌子好
遮光窗帘多少钱一米
什么牌子的窗帘好
隔音窗帘效果怎么样
窗帘一般多少钱一米