【发布时间】:2012-04-09 08:54:12
【问题描述】:
我可以直接将数组传递给 printf:
char text[1024] = "text";
printf("%s", text);
或者我应该将其显式转换为 char 指针:
char text[1024] = "text";
printf("%s", (char*) text);
我之所以这么问,是因为我认为它可能将数组元素直接复制到 va_list 中,而不是只放置一个指向第一个元素的指针。
【问题讨论】:
-
只是不要忘记空终止符。
-
@sje397: "text" 是 {'t','e','x','t',0}
-
是的 stefan,但如果您正在操作数组(并提出这个问题),请记住这一点。
-
@sje397 为什么需要记住零终结符?数组总是自动获取它,它是数组初始化的文本的一部分。此外,这个数组的创建方式,前四个之后的所有字符也被初始化为零。
-
我并不是说它直接相关。我只是假设在数组中存储文本的人很可能会做一些事情,比如将文本从一个数组复制到另一个数组。此外,如果这样的人是一个相对初学者,正如这个问题向我建议的那样,那么他们可能想知道
strlen将返回一个小于您通常想要复制的字节数的数字。只是想提供帮助。