【发布时间】:2014-12-13 22:29:38
【问题描述】:
在 C 语言中,我注意到有几种方法可以声明一个 char 数组。有什么区别:
-
char arr[10] = "abcdefghij"; -
char* arr2[10] = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j"};-
gcc说我需要 2 中的 char 之后的星号,而不是 1 中的星号。 - 打印 1 时我可以使用
printf("%s\n", arr); and it prints abcdefghij@ - 打印 2 时,我必须使用
for循环
-
它们为什么不同?
【问题讨论】:
-
如果第二点
printf("%s\n", arr);是未定义的行为,因为arr不会由空字符终止。你需要一个额外的元素来存储这个'\0'字符。您可以简单地将您的字符数组声明为char arr[] = "abcdefghij";,然后问题就消失了。 -
为什么标记为 C++?这不是合法的 C++ 代码。您是在询问“太多初始化程序”错误吗?
-
这不是作业,我只是想为面试做编程题。
标签: c++ c arrays printing printf