我在使用变量作为数组索引时遇到问题代码基本上是这样的:
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代码,但如果它是重要的,它的视差芯片,我使用简单的IDE。
最佳答案
你的阵型
char** myArray;
不是真正的数组。它是一个指针在你分配之前,它不会指向任何地方。任何对它的取消引用都会产生未定义的行为。
取消对未定义指针的引用正是您在这里所做的:
myArray[0] = (char*)"Foo";
因为指针没有指向有效的内存块,所以这不起作用。你需要做的是先分配
myArray
。例如,您可以使用malloc
:char** myArray = malloc(2 * sizeof(char*));
你的代码现在可以工作了。为了避免内存泄漏,在
free(myArray)
函数的末尾添加doStuff
。关于c - C-数组不能使用变量作为索引,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25227840/