【发布时间】:2013-10-23 12:48:59
【问题描述】:
这些声明之间的区别?
1.
char **strings = {"abc", "bca", "rat", "tar", "far"};
2.
char *strings[] = {"abc", "bca", "rat", "tar", "far"};
3.
char strings[][] = {"abc", "bca", "rat", "tar", "far"};
只有 (2) 是有效的声明。这些类型有什么区别,为什么(1)和(3)无效?
【问题讨论】:
-
谁说只有2个有效?
-
如果我编译并尝试仅打印 2) 工作正常。
-
这取决于您如何定义有效。作为“有效声明”,它们都是有效的。对于 2 dim-arr,只有 2 有效。
-
@SharonJDDorot C 标准定义了什么是有效的。 #1 和 #3 无效。
-
@interjay 正如我所说,为了声明一个字符串数组,是的,它是无效的。但是他说 1 和 3 是无效的声明,而不是无效的数组定义。您当然可以使用所有 3 种形式,但用于不同类型的操作。