You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

向函数传递字符串字面量时是否需手动添加\0?以printError函数为例

关于C语言字符串字面量末尾\0的问题

嘿,这个问题问得很实用,刚好是C语言里基础但关键的细节!

直接给你结论:完全不需要手动在字符串字面量末尾追加\0,编译器会自动帮你加上这个终止符。

举个具体的例子,当你写"LScreateModel"的时候,编译器会把它处理成一个以\0结尾的字符数组——它的实际内容是:'L'、'S'、'c'、'r'、'e'、'a'、't'、'e'、'M'、'o'、'd'、'e'、'l'、'\0',比你看到的字面量多了最后那个空字符。

对于你的函数void printError(char* pszOrigin, int nErr)来说,传入的字符串字面量指针pszOrigin指向的就是这个带\0的数组首地址,函数内部可以正常进行任何依赖字符串终止符的操作(比如用strlen()计算长度、遍历字符串到末尾等等),完全不会有问题。

额外提一句:就算你手动在字面量里加了\0(比如"LScreateModel\0"),编译器还是会在整个字面量的最后再补一个\0,但这属于画蛇添足,完全没必要这么做。

放心直接用printError("LScreateModel", nErr);就好啦!

内容的提问来源于stack exchange,提问作者Adrian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:44:22