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

时间:2014-08-10 10:51:06

标签: c arrays propeller-tool

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

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。

2 个答案:

答案 0 :(得分:6)

你的数组

char** myArray;

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

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

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

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

执行此操作
char** myArray = malloc(2 * sizeof(char*));

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

答案 1 :(得分:-1)

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

编译器套件已使用符号index(例如,index()中名为string.h的函数)。如果您将其更改为" my_index",它将正常工作。

第二种选择是使符号"索引"将文件范围变量设为static

static int index;