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

"本文详细介绍了C语言中字符串结束符''的作用和重要性。''是一个空字符,用于标记字符串的结束,使得编译器能够识别字符串的边界。在内存中,字符串常量会自动添加''。当字符串赋值给数组时,''也会被拷贝。若数组长度不足,可能导致''丢失,影响字符串处理。通过示例代码展示了''在输出和字符串初始化中的应用。"
摘要由CSDN通过智能技术生成

C语言中的结束符’\0’

'\0’是C语言中的字符串结束标志。它的十进制输出:0,字符型输出:空字符(什么都没有,空空如也)。
(C语言中字符串是用英文输入法的双引号括起来,而字符是用英文输入法单引号括起来,本文由于文本输入问题,所以部分英文输入法的单引号打不出来而显示了中文输入法的单引号)
'\0’是转译字符,意思是告诉编译器这并不是字符0,而是空字符。空字符\0对应的二进制是00000000,而数字0对应的是00110000(也就是ASCII码0x30)。
下面展示一些 代码

//输出\0
	printf("%c\n", 0);
	printf("%c\n", 0x30);
	printf("%c\n", '\0');
	printf("%d\n", '\0');
	printf("OK\n");	
//Ubuntu编译运行new3.c文件
gcc new3.c 
./a.out
//输出结果如下

0

0
OK

C语言中,字符串总是以’\0’作为串的结束符。因此当把一个字符串存入一个数组时,也把结束符 ‘\0’存入数组,并以此作为该字符串是否结束的标志。有了结束符’\0’标志后,就不必再用字符数组的长度来判断字符串的长度了。

例如

把一个字符串赋值给数组:char str[] = {“yyds”};
实际上数组str在内存中的实际存放情况为:
yyds ‘\0’
这后面的’\0’是由C编译系统自动加上的。所以在用字符串赋初值时一般无须指定数组的长度, 而由系统自行处理。
把字符数组str中的字符串拷贝到字符数组arr中。串结束标志’\0’也一同拷贝。
下面展示一些 例子程序

	char str[] = {"yyds"};
	int i = 0;

	printf("数组str长度为:%ld\n", sizeof(str));

	for(i; i < sizeof(str); i++)
	{
		printf("str[%d] = %c\n", i, str[i]);	
	}
	printf("OK");
数组str长度为:5
str[0] = y
str[1] = y
str[2] = d
str[3] = s
str[4] = 

OK

特例

  1. 数组长度不够。假设定义一数组,如:char str[4]={“yyds”};
    由于字符组str的长度为4,所以后面的信息会丢失,即结束符’\0’丢失。

  2. 如果在给数组赋值时,把每个字符单独用引号括起来。也会丢失’\0’。如:
    char str[]={‘y’,‘y’,‘d’,‘s’};

如果希望数组以’\0’结束,则可以写成以下三种形式中的一种:

  1. char str[ ]= {“yyds”}; //字符串赋值
  2. char str[] = {‘y’,‘y’,‘d’,‘s’,‘\0’}; //手动添加结束符\0
  3. char str[5] = {‘y’,‘y’,‘d’,‘s’}; //故意给数组预留一个空位
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值