Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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 是否需要将\0添加到传递给函数的字符串文字的末尾?_C_String - Fatal编程技术网

C 是否需要将\0添加到传递给函数的字符串文字的末尾?

C 是否需要将\0添加到传递给函数的字符串文字的末尾?,c,string,C,String,我有这个功能: void printError(char* pszOrigin, int nErr) {...} 使用文本字符串调用时: printError("LScreateModel",nErr); 是否需要在字符串literal“LScreateModel”的末尾追加一个\0? 或者它是自动得到的吗?它是自动添加的,因为您正在使用字符串文本创建一个常量char* 类似“hello”的字符串文字被视为常量C字符串,其数据类型通常指定为const char*(指向char常量的指针) 可

我有这个功能:

void printError(char* pszOrigin, int nErr) {...}
使用文本字符串调用时:

printError("LScreateModel",nErr);
是否需要在字符串literal
“LScreateModel”
的末尾追加一个
\0


或者它是自动得到的吗?

它是自动添加的,因为您正在使用字符串文本创建一个常量char*

类似“hello”的字符串文字被视为常量C字符串,其数据类型通常指定为const char*(指向char常量的指针)


可以找到有关C字符串的更多信息。

不,您没有。字符串文字已以null结尾。

这是自动的。字符串文字的结尾总是有一个NUL终止符。因此,例如,字符串文字
“abc”
实际上是四个字符(
'a''b''c'\0'
),而不是三个。不,您没有-字符串文字将已经有一个终止符。无论您使用
字符*
还是
常量字符*
(后者是正确的类型,前者允许与旧代码兼容)