C – 数组不能使用索引变量

我使用变量作为数组的索引时遇到问题。 代码基本上是这样的:

int index; void main() { index = 1; doStuff(); } void doStuff() { char** myArray; myArray[0] = (char*)"Foo"; myArray[1] = (char*)"Bar"; print("%s", myArray[index]); } 

如果我这样做:

 print("%s", myArray[1]); 

它工作正常。 任何人都可以帮我吗?

它应该只是C代码,但如果它很重要,它用于Parallax芯片,而我正在使用Simple IDE。

你的arrays

 char** myArray; 

不是一个arrays。 这是一个指针。 在你指定它之前,它无处可指。 任何解除引用都会产生不确定的行为。

取消引用未定义的指针正是您在这里所做的:

 myArray[0] = (char*)"Foo"; 

由于指针不指向有效的内存块,因此不起作用。 要使其工作,您需要做的是首先分配myArray 。 例如,您可以使用malloc执行此操作:

 char** myArray = malloc(2 * sizeof(char*)); 

你的代码现在可以运行了。 为了避免内存泄漏,请将free(myArray)添加到doStuff函数的末尾。

(您需要修复代码:尚未分配数组myArray

符号index已被编译器套件使用(例如, string.h名为index()string.h )。 如果将其更改为“my_index”,它将正常工作。

第二种选择是通过使符号“index”成为static来使其成为文件范围变量。

static int index;