养女里的女演员:C语言的字符与字符串数组,我混乱了!

来源:百度文库 编辑:高校问答 时间:2024/05/05 09:47:41
第一个:char c[5]={'C','h','i','n','a'};

第二个:char c[6]={'C','h','i','n','a','\o'};

不明白?
第一个有c[0]c[1]c[2]c[3]c[4]c[5],为什么不加一个'\0'?
第二个有二个要加个'\0'?
这样赋值是字符串还是字符,我搞不明白。

两者都可以,实际上字符数组也就是字符串,两者是同一个东西,所以不必混乱.你给字符数组c[5]赋值也等同于给字符串c赋值.
CHAR型在其值的最后,会默认加一个'\0'的结束符
第一个:char c[5]={'C','h','i','n','a'};
在程序中,电脑会自动给c加上'\0'用以结束,
也就是说在内存中C是这么存储的 china\0asdfsdf
'\0'前面就是C的内容,而后面就不是c的内容,

第二个:char c[6]={'C','h','i','n','a','\0'};
在内存中是这么存储的 china\0\0
因为第6个字符刚好存的是结束符,所以当你输出c的时候就只有5个字符,读到第6个字符时,电脑识别'\0'为结束符就不往下读了.

首先char c[]定义的都是字符数组,即数组中每个元素都是字符
其次,在C中,字符串是以'\0'结尾的,所以char c[6]={'C','h','i','n','a','\0'}; 可以看作为以c[0]为首地址的字符串,但c本质还是字符数组

当以printf("%s")输出时,第一个方法,输出到a后,由于没有字符串结尾标志所以后面是随机乱码,而第二种方法,读到'\0'就不在输出了

第一个是字符数组,而第二个是字符数组也是字符串。
在C语言中字符串使用 '\0' 来结尾

第一个是字符数组,而第二个是字符数组也是字符串。
在C语言中字符串使用 '\0' 来结尾
这说法对..我刚学过不久...

第一个不合法~
会如果输出会有错误~