【发布时间】:2014-01-26 22:52:03
【问题描述】:
我在 Careercup 中遇到过这个关于 printf 的问题。
char *str = "hello";
printf("%s",str);
printf(str);
第二个 printf 语句有时会崩溃。我检查了各种网站。编写程序,看看它是否确实如此。但事实并非如此。另外,我知道 printf 接受类型为“const char* format”的参数,但格式可以是任何常量字符串,如“hello”。但是如果我将它存储在一个字符串 str 中(它当然指向只读内存)。预计将以相同的方式工作。究竟会发生什么?
谁能给个详细的解释。
【问题讨论】:
-
它的工作方式完全相同。第一个参数始终被解释为格式字符串。
-
而
str变量不包含%something占位符... -
我看不到第二条语句会如何崩溃,除非 str 不是以 null 终止的。
-
@cup 如果第二个语句包含参数说明符,则它可能会崩溃,因为没有参数。