C语言中\0究竟有什么用?

\0表示结束,但在实际字符数组中究竟有什么用?比如"字符数组的长度就显得不重要"这句话包含的意思。

结束符号‘\0’,也可以表示成数字0。(字符'\0'对应的ascii码就是0)

这个结束符号有没有实际上不影响字符数组实际内容。只是让程序识别字符串到哪里算结束。

特别是我们常用的一些关于字符串的函数,也是通过结束符号来识别字符串长度的。

所以我们定义字符数组存放字符串,通常会多申请一个字符空间,用来保存结束符号

举个例子:

比如下面这个简单代码。

"abcdefghi"这个字符串常量只有9个字符,但在实际最后还有一个结束符号0,所以我定义数组长度10。此时str【9】的值就是0

当调用strlen函数计算字符串长度时,得到的就是9。

但当我把str【3】的值变成0,strlen计算长度就知道str【3】为止(实际此时str【9】的值还是0,但只以第一个遇到的0为准)

#include <stdio.h>
#include <string.h>
int main()
{
    char str[10]={"abcdefghi"};
    printf("strlen(str)=%d  %s\n",strlen(str),str);
    str[3]=0;
    printf("strlen(str)=%d  %s\n",strlen(str),str);
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-12-20
1、'\0'就是为空的字符,所以什么都不输出。
2、'\0'是字符串的结束标志,遇到\0就表示该字符串已到末尾。
3、'\0'的ASCII码值为0。
第2个回答  2018-12-20
这是c语言对字符串结束符的规定。也就是字符串的实际内容再加上一个'\0'表示了。比如:字符串:
char abc[10];
strcpy(abc,"hello");
则abc数组的存储结构为:
第3个回答  2018-12-20
'\0'是字符串的结束标志,遇到\0就表示该字符串已到末尾。
相似回答