【发布时间】:2020-11-15 21:37:39
【问题描述】:
对于 C char st[] = "heloThere"; printf("%s",&st[0]); 中的代码,printf 怎么知道它只需要打印到 heloThere,而不是除此之外,因为我们只将第一个字节的地址传递给函数。还突出显示 C++。这也有效printf("%s",st)。因为我们没有像上面那样传递任何地址。 printf 的工作方式有何不同?是单独定义的吗? (然后会重载,C 不支持)
【问题讨论】:
-
C "strings" 是
char数组,末尾有一个额外的'\0'终止符。它不打印,但用于标记字符串的结尾。 -
在C中,大部分字符串以
'\0'结尾,所以printf会循环遍历字节数组找到'\0'得到字符串长度。 -
因为 C 中的字符串实际上被称为 null-终止字节字符串。
标签: c++ arrays c printf c-strings