回答
未定义行为
(C99,7.19.6.1p8)“■如果没有升长度改性剂的存在,则参数 应是指向字符 类型的数组的初始元素“。
与一些编译器/ libc它打印(null)
和其他一些segfaults。
(注:用C违反shall
不是一个约束是不确定的行为,请参阅标准C 4.p2“一致性”)
@ThiefMaster由于一般标准和特别是C标准中“shall”的含义,导致未定义的行为。请参阅开始处的“一致性”部分。 – 2012-01-10 12:55:37
如果您还可以在C++标准中找到相应的章节,那就太棒了。 – 2012-01-10 12:58:17
@Let_Me_Be:C++标准通常不会重新定义C函数,因为这个原因,它通过引用C标准开始。 – 2012-01-10 13:06:08
是。
printf
将取消引用指针str
并取消引用NULL指针是UB。
是'printf'取消标准指针标准部分的指针吗? – 2012-01-10 12:56:10
@codaddict你不是指“否”作为问题的答案吗? – 2012-01-10 13:12:05
取消参考null
指针C
产生undefined behavior
,这可能是灾难性的。但是,大多数实现只是停止执行有问题的程序,通常是出现分段错误。
请检查this
为什么-1这个? – 2012-01-10 13:02:12
@MS因为它是完全不相关的。 – 2012-01-10 13:03:20
@Let_Me_Be请您详细说明您为什么认为这是“完全不相关”的原因? – 2012-01-10 13:07:26
- 1. 打印字符串以特定字符
- 2. 如何检查字符串中是否只定义了符号?
- 3. 打印字符串
- 4. 在Python中,打印字符串时是否可以转义换行符?
- 5. 检测是否找到了不可打印的字符 - Perl
- 6. serial.println(String)打印“#”而不是字符串
- 7. 定义是否在编译时的字符串/字符文字
- 8. LUA字符串打印
- 9. 打印编码字符串
- 10. 打印“在Java字符串
- 11. 打印json到字符串
- 12. 打印字符串反向
- 13. 打印一个字符串
- 14. 打印多行字符串
- 15. 向后打印字符串
- 16. 打印字符串先后
- 17. 打印字符串在python
- 18. C#打印字符串
- 19. 打印字符串(汇编)
- 20. 打印字符串列表
- 21. 问题打印字符串
- 22. 打印输出字符串
- 23. 只打印字符串
- 24. 打印转义字符
- 25. 如何在C中打印定义的字符串宏?
- 26. 是否有打印出所有字符串?
- 27. 是否有数学字符串的漂亮打印API?
- 28. 检测Perl字符串是否可打印
- 29. 字符串是未定义
- 30. 打印字符串的字符
很抱歉说得那么苛刻,但如果你要问,你可能就错了。 – 2012-01-10 13:08:38
有没有这样的事情作为“空字符串”。开头几乎没有像“字符串”这样的东西(当然,除非你的意思是'std :: string')。 – 2012-01-10 13:53:14
@KerrekSB从标准:_“A **字符串**是一个连续的字符序列,并且包括第一个空值 字符。”但是,NULL字符串对我来说太简单了。 – 2012-01-10 13:59:54