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;