Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 字符数组初始化:在末尾添加NUL_C_Arrays_Character - Fatal编程技术网

C 字符数组初始化:在末尾添加NUL

C 字符数组初始化:在末尾添加NUL,c,arrays,character,C,Arrays,Character,例如: char s[]={'I',' ','a','m',' ','a',' ','g','o','o','d',' ','g','u','y','\O'}; char s[]={'I',' ','a','m',' ','a',' ','g','o','o','d',' ','g','u','y',}; 是否始终需要在末尾使用NUL初始化字符数组?如果不添加NUL,第二个示例是否有效?还有,为什么我们必须在末尾添加Nul 是否始终需要在结尾处使用NULL初始化字符数组 不总是这样。当您希望

例如:

char s[]={'I',' ','a','m',' ','a',' ','g','o','o','d',' ','g','u','y','\O'};

char s[]={'I',' ','a','m',' ','a',' ','g','o','o','d',' ','g','u','y',};
是否始终需要在末尾使用NUL初始化字符数组?如果不添加NUL,第二个示例是否有效?还有,为什么我们必须在末尾添加Nul

是否始终需要在结尾处使用NULL初始化字符数组

不总是这样。当您希望字符数组的行为类似于字符串时,这是必需的

因此,如果您只想像普通数组一样对该数组进行读写,那么末尾不需要
NUL
(顺便说一句,它是
NUL
,而不是
NULL
)。但是,如果要使用字符串函数,如
strlen()
或类似的函数,则需要
NUL


如果不添加NULL,第二个示例是否有效


第二个示例将完全正常工作,直到您将其视为任何普通数组而不是字符串。也就是说,如果您不使用strlen()或类似的字符串函数,它应该可以正常工作。

这是一个
\O
?(斜杠后接字母O)它应该是
\0
(斜杠后接数字0)顺便说一句,对于长度未知的字符数组,如果以这种方式声明
char s[]=“this is string”
@CherubimAnand,则会自动为其分配
NULL
,并且:字符数组和C-“string”之间存在差异!“第二个例子行得通吗…”-答案不能没有更多的上下文。也许阅读C-“字符串”以及它们与
char[]
的关系是个好主意。回答得很好。我认为如果你想打印出字符串,也需要它。与printf类似(“这是字符串:%s”,s)@Matputer
NUL
表示
'\0'
0
(两者相同),而
NULL
是一个扩展到
(void*)0
的宏(此宏可能因不同系统而异)
NUL
NULL
之间有什么区别吗?@CoolGuy谢谢:)我删除了我之前问过的评论mistake@Matputer谷歌“NUL VS NULL”获取更多信息。