我在使用变量作为数组索引时遇到问题。代码基本上是这样的:
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。
答案 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;