【发布时间】:2013-05-22 11:14:37
【问题描述】:
在许多编程语言(包括JavaScript、Java 和Ruby)中,可以在自身内部放置一个数组。在这里,我试图将一个 C 整数数组放入其自身的第三个索引处,但我不确定 C 编程语言是否支持这一点:
#include <stdio.h>
int main(void) {
int arr[] = {1, 1, 2};
arr[2] = arr; //now I'm trying to put arr into itself.
printf("%i", arr[2]); //this prints a negative number each time I run the program
printf("%i", arr[2][0]); //prog.c:7:24: error: subscripted value is neither array nor pointer nor vector
return 0;
}
是否可以在自身内部放置一个 C 数组,或者根本不可能?
【问题讨论】:
-
如果需要不同长度的数组,请制作一个锯齿状数组。
-
@chris 不过,我不明白这会使将数组放入内部变得更容易。
-
您可以创建一个 void 指针数组并使用大量类型转换来让自己发疯……也许您想要的是链表?
-
您可能可以使用 void 指针数组,但是...为什么?
-
@AndersonGreen,如果你分配一个指针,这相当容易。如果您想要副本,则工作量不大。问题是 C 根本不像 Java,而且绝对不像 Ruby 或 JS。我发现较新的语言倾向于内置某些 C 没有的东西,而且其中很多倾向于修复 C 比现在大多数语言更难的东西,比如字符串操作。