【发布时间】:2020-05-23 14:52:02
【问题描述】:
在 C 的入门课程中,我了解到,在存储字符串时,在其末尾使用空字符 \0 存储。但是如果我想打印一个字符串,比如printf("hello"),虽然我发现它不是以\0 结尾的,但下面的语句
printf("%d", printf("hello"));
Output: 5
但这似乎是不一致的,据我所知,字符串之类的变量存储在主内存中,我猜在打印某些内容时它也可能存储在主内存中,那么为什么会有差异?
【问题讨论】:
-
除了您的代码至少遗漏了
);,您打算用该代码显示什么?你如何证明它不是以\0结尾的? -
它存储的内存与它有什么关系?
-
在 C 中,所有文字字符串都是真正的字符数组,其中包括空终止符。
-
@glglgl 我认为 printf() 返回它应该在屏幕上打印的字符数。
-
@AjayMishra 是的,它确实应该打印 5 个字符。终止的 0 字节不打印在屏幕上。