c中的字符串和字符

时间:2016-05-01 22:26:49

标签: c string

以下是否正确,如果没有,那么为什么你认为不对? 所有字符串都是字符数组,但并非所有字符数组都是字符串?

我会回答的是以下是正确的:我认为所有字符串都有最后一个字符'\ 0'并且在打印输出字符串期间的字符串在'\ 0'之后没有看到其他字符,但是字符数组都包括'\ 0'之后的字符

2 个答案:

答案 0 :(得分:1)

字符串可以存储在字符数组中,末尾有一个额外的空格来存储标记字符串“'\ 0'”,它标记字符串值的结尾。例如,以下两个数组都包含字符,但只有第二个数组包含正确的字符串表示。

字符数组(不是格式良好的字符串):[H] [E] [L] [L] [O]

具有正确终止的字符数组(格式良好的字符串):[H] [E] [L] [L] [O] [\ 0]

答案 1 :(得分:0)

C中,字符串是与标准库一起使用的定义。与 array 不同,它甚至不是语言定义的一部分。

  

string 是由第一个空字符终止并包含第一个空字符的连续字符序列。 C11§7.1.11

     

数组类型描述了具有特定成员对象类型的连续分配的非空对象集,称为元素类型。 §6.2.520

所有字符串都包含空字符。不需要包含空字符的字符数组。有了这个,“所有字符串都是字符数组,但不是所有字符数组都是字符串?”应该是显而易见的。