C语言中的空字符’\0’

本博客整理自:
http://blog.csdn.net/suluner/article/details/54408638
https://zhidao.baidu.com/question/578593062.html

一、

空字符在c语言中空字符用’\0’表示。
‘\0’对应的整型值是0,所以给一个字符变量赋值为空字符时,以下两种都是可以的:

char ch='\0';
char ch=0;

二、

今天在阅读源代码的过程中遇到了一个字符串操作:
s[i] = ‘\0’
当时感觉很奇怪,为什么要将一个位置的字符赋值为空字符串’\0’。原来空字符在C语言中是个很特殊的字符。主要体现在字符串中。

字符串
字符串就是一串零个或多个字符,并且以位模式为全0的NUL字节即空字符(‘\0’)结尾。C语言中字符串没有显示的数据类型,字符串通常存储在字符数组或动态分配的内存中,在编码操作中通常将整个字符串作为操作对象,常用操作包括复制、查找、比较等。

空字符与字符串
1、空字符是字符串的终止符。注:空字符本身不是字符串的一部分,所以字符串的长度并不包含空字符;
2、操作字符串时,必须保证字符串以空字符结尾(注:不以空字符结尾的字符序列,不是字符串)。

所以那句代码的意思是将位置i以后的字符截断丢弃,起到分割字符串的作用。

趁此机会,将与空字符有关的知识梳理一遍:

如果在一个需要字符串的地方(例如strlen函数的参数)使用了一个不是以空字符结尾的字符序列,会造成什么结果呢?
a、strlen函数将无法知道空字符是没有的,所以它将继续进行查找,一个接一个字符查找直到发现一个空字符为止,或许它找几百个字符才找到,而此时strlen函数的这个返回值从本质上说是一个随机数或者说并没有实际意义;
b、如果字符串操作函数试图访问了系统分配给这个程序以外的内存范围,程序会崩溃(通常表现为段溢出,程序异常退出)。
第二部分转载自第一个链接,未完全转载。

C语言中的空字符'\0'相关推荐

  1. C语言中的结束符‘\0‘

    C语言中的结束符'\0' '\0'是C语言中的字符串结束标志.它的十进制输出:0,字符型输出:空字符(什么都没有,空空如也). (C语言中字符串是用英文输入法的双引号括起来,而字符是用英文输入法的单引 ...

  2. C语言中到底是非0表示真,还是1表示真?

    我是荔园微风,作为一名在IT界整整25年的老兵,今天我们来重点说一说C语言中到底是非0表示真,还是1表示真?这就是说到C语言中的两个常见运算形式,即关系运算符和逻辑运算符. 为照顾急性子的同学,先直接 ...

  3. C语言中字符串结束符'\0'

    本质 '\0'就是8位的00000000,因为字符类型中并没有对应的这个字符,所以这么写.'\0'就是 字符串结束标志. '\0'是转义字符,意思是告诉编译器,这不是字符0,而是空字符.空字符\0对应 ...

  4. C语言中长度为0的数组

    前面在看Xen的源码时,遇到了一段代码,如下所示: 注意上面最后一行的代码,这里定义了一个长度为的数组,这种用法可以吗?为什么可以使用长度为0 的数组?长度为的数组到底怎么使用?--这篇文章主要针对该 ...

  5. 在c语言中整数除以0,整数除零在哪些平台上触发浮点异常?

    我不确定当前的情况如何,但是目前情况是FP异常检测支持与整数非常不同.整数除法陷阱很常见. 如果POSIXSIGFPE完全引发异常,则要求它引发. 但是,您可以找出它是哪种SIGFPE,以查看它实际上 ...

  6. c语言中空格的作用是什么,C语言中空格和\0的区别

    \0 为字符串结束符,比如说: abcd (空格)cdefg: 存入数组时,空格作为一个字符占有一个字节的空间,我们可以把它看着一个字符去处理.而"\0 " 则是这个字符串的结束标 ...

  7. C语言中空格,空字符,字符数组结束符的区别

    空格符号和空字符是不一样的,在ASCII里面,空格(space)符号的ASCII码是0x20,而空字符是0x0, 2个是完全不一样的2个字符呵呵. 空字符  一般来描述一个字符串的结尾,其实是控制符的 ...

  8. c语言中.和-区别,c语言中-和.的区别

    对于c语言中"->"和"."的区别总结如下: 1.A.B则A为对象或者结构体: 2.A->B则A为指针,->是成员提取,A->B是提取A ...

  9. 字符串中空格符 空字符

    空格符号和空字符是不一样的,在ASCII里面,空格(space)符号的ASCII码是0x20,而空字符是0x0,2个是完全不一样的2个字符呵呵. 空字符一般来描述一个字符串的结尾,其实是控制符的一种, ...

最新文章

  1. SpringCloud Alibaba微服务实战(四) - Nacos Config 配置中心
  2. Windows Phone应用程序政策性约束
  3. 【pmcaff】看看人家的办公室 天天加班都愿意
  4. wxWidgets:wxGridUpdateLocker类用法
  5. java asynccontext,超时后的JavaEE 6 AsyncContext行为
  6. Python 数据结构与算法——归并排序
  7. select case语句_图解Go select语句原理
  8. 基于Python3-Pygame的坦克大战小游戏
  9. JAVA基础——设计模式之观察者模式
  10. 一个出色的UI设计师需要具备哪些能力?
  11. Android 自定义一个简版的取色器ColorPicker
  12. java wps haspassword,#在WPS表格里面设置了密码怎么取消#excel解除密码保护
  13. 车牌识别对于智慧城市的重要性
  14. A股股票交易如何计算
  15. 我,马斯克:地球首富却要葬在火星
  16. 【Week 1】Preferences and Ratings
  17. iOS数字金额转化为大写汉字(阿拉巴数字转化为汉字)
  18. 数模常用查找数据网址大全
  19. php 7.0 nts 安装,Windows phpstudy 7.0.12 nts 安装redis
  20. 我的Ubuntu装机配置

热门文章

  1. 详说sizeof与strlen的区别与联系
  2. kafka集群为什么需要三个节点_Kafka突然宕机了?稳住,莫慌!
  3. 阿里云java面试_20个高级Java面试题汇总
  4. linux shell 十进制转十六进制_问1得10:shell十进制转换到任意进制,多大事儿,一行搞定!
  5. 2台电脑一根网线传文件_黑龙江工程专用网线报价,黑电源线配件厂家
  6. php 数组改成索引数组_PHP:用现有的唯一值替换数组索引键
  7. 初始化 数组 java_如何用Java初始化数组
  8. scala代码示例_Scala数组示例
  9. Python Frozenset()
  10. tomcat7-maven-plugin-用于部署WAR的Tomcat Maven插件