使用花括号初始化C char数组,是否可以省略空字节'\ 0'?

use*_*312 3 c character-arrays

所以我读到了:

char pattern[] = "ould";

基本上是更简单的写作方式:

char pattern[] = { 'o', 'u', 'l', 'd', '\0' };

我知道null字符\0标志着字符串的结束,但如果我写它如下:

char pattern[] = { 'o', 'u', 'l', 'd'}; (没有\ 0)

它仍然编译.

哪里pattern没有\0原因问题,因为它似乎是编译没有警告(-Wall)

CB *_*ley 10

如果你没有终止零,你不再有一个空终止字符串,只是一个数组char,所以将它传递给任何期望字符串的函数将是一个错误.例如strlen,作为源参数到strcpy,作为一个...参数来printf%s格式说明等

  • 啊,所以`\ 0`使字符数组成为C字符串?(这里是C新手) (2认同)