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'
),而不是三个。不,您没有-字符串文字将已经有一个终止符。无论您使用字符*
还是常量字符*
(后者是正确的类型,前者允许与旧代码兼容)