Sug*_*ime 1 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]);
}
Run Code Online (Sandbox Code Playgroud)
如果我这样做:
print("%s", myArray[1]);
Run Code Online (Sandbox Code Playgroud)
它工作正常.任何人都可以帮我吗?
它应该只是C代码,但如果它很重要,它用于Parallax芯片,而我正在使用Simple IDE.
你的阵列
char** myArray;
Run Code Online (Sandbox Code Playgroud)
不是一个阵列.这是一个指针.在你分配之前,它无处可指.任何解除引用都会产生不确定的行为.
取消引用未定义的指针正是您在此处所做的:
myArray[0] = (char*)"Foo";
Run Code Online (Sandbox Code Playgroud)
由于指针不指向有效的内存块,因此不起作用.您需要做的是使其工作首先分配myArray.例如,你可以用malloc:
char** myArray = malloc(2 * sizeof(char*));
Run Code Online (Sandbox Code Playgroud)
你的代码现在可以运行了.为了避免内存泄漏,请添加free(myArray)到doStuff函数末尾.