c语言中字符串数组的长度,什么时候将'\0'算上,什么时候不用算上啊?

如题所述

一般意义上字符串数组的长度是不包括'\0'的。如char a[]=“China”;这个长度就等于5。其实在系统中a占了6个位置,最后一个放了一个'\0'。

但是你如果你写char a[]={'C','h','i','n','a'};这个长度也是5,但系统不会在最后放'\0',所以它在系统中只占5个位置。应该说,这个a只能叫“字符数组”,不能叫“字符串数组”。追问

那定义数组a的时候,中括号里面是填写5,还是6啊

追答

如果是定义字符串数组,要多加一个,如:
char a[6]=“China”;
如果是定义字符数组,可不多加,如:
char a[5]={'c','h','i','n','a'};

但一般都只用一个空的中括号,让系统自行去处理,呵呵😜

温馨提示:内容为网友见解,仅供参考
无其他回答

c语言中字符串数组的长度,什么时候将'\\0'算上,什么时候不用算上啊?
一般意义上字符串数组的长度是不包括'\\0'的。如char a[]=“China”;这个长度就等于5。其实在系统中a占了6个位置,最后一个放了一个'\\0'。但是你如果你写char a[]={'C','h','i','n','a'};这个长度也是5,但系统不会在最后放'\\0',所以它在系统中只占5个位置。应该说,这个a只能...

C语言里哪个函数计算字符串长度要算\/0,哪个有不用啊?
\\0是字符串结束符,仅占用存储空间,但不算作有效的字符,系统函数strlen(char s[]),仅返回'\\0'之前的字符个数。而关键字sizeof返回的是真个字符串包含'\\0'在内占用的字节数。请注意strlen是函数,而sizeof是C\/C++关键字。

c语言字符串长度算空格吗?
算。C语言字符串规定,字符串长度是指从字符串开始,到字符串结束符(\\0)为止,所有字符的总数,不包括\\0。这里的所有字符,同样包括不可见字符,自然包括空格。比如:字符串"for test"长度是8。

c语言。请问这两种情况,数组长度可以省略吗,要不要加\\0??谢谢
第一种 默认没有 '\\0'第二种 默认加'\\0'调试效果图如下:

C语言中,为什么有的字符数组要后面要加\\0,有的不要加?
这个程序此处不加也没有问题的。因为接下来是先gets(str);然后再使用的。在函数内部定义的变量或数组,都是要先经过赋值后才能运用的,否则其中的值不确定。如果在程序代码中先经过赋值后再应用,那么在声明变量时可以不赋初值的。

C语言中 \\0 代表什么?
字符串总是以'\\0'作为串的结束符。因此当把一个字符串存入一个数组时,也把结束符'\\0'存入数组,并以此作为该字符串是否结束的标志。有了'\\0'标志后,就不必再用字符数组的长度来判断字符串的长度了。C语言允许用字符串的方式对数组作初始化赋值。例如:char c[]={'c','','p','r','o'...

c语言中字符串,为什么最后要加个‘\\0' ?
\\0'在c语言中代表着字符串的结束 在你不输入'\\0'的时候 字符串不知道已经读完了 还有继续向后读 读一个字节长度是?两个字节长度 就是烫 这是ascii值决定的 汉子是两个字节就不多说了 '\\0'的ascii值为(0x)00有时候如果未定义可能会出现一堆烫知道出现默认的00(也就是'\\0')才会...

关于C语言字符数组的赋值最后自动添加‘\\0’问题
c[5]只有5个空间无法完全容纳字符串"hello",因为这个字符串需要占用6个字符位置。所谓自动加'\\0'的问题是:你写在双引号中的,编译程序会认为是字符串,会自动为你添加上一个字符串结尾符号0,而不是运行时添加的。如果你用debug方式运行程序,调试环境自动会把你开设的char a[5];进行初始化0的...

...str[6]="string",就数组级越界了呢?不是说'\\0'不占内存的吗?_百度...
在C语言中没有专门的字符串变量, 通常用一个字符数组来存放一个字符串。 前面介绍 字符串常量时, 已说明字符串总是以'\\0'作为串的结束符。 因此当把一个字符串存入一个数 组时,也把结束符'\\0'存入数组,并以此作为该字符串是否结束的标志。有了'\\0'标志后,就不必再用字符数组的长度来判断...

字符串长度的定义
在C语言中,字符串以字符数组存储,其长度计算是到'\\0'的字符数。定义字符串长度时,正确的方法是为其所需空间大小加1,如`char str[MAX_SIZE]; char str[MAX_LEN + 1];`,而非直接加上数组大小或长度本身。在编程中,字符串处理需要注意C字符串的结尾标志。字符串作为文本数据类型,可以表示由...

相似回答