我问了一个问题:使用 C 通过引用传递数组。我意识到我的问题是 C 中指针星的使用。最终结果证明,这种方法适用于我的程序:
#include <stdio.h>
void FillArray(int** myArray)
{
*myArray = (int*) malloc(sizeof(int) * 2);
(*myArray)[0] = 1;
(*myArray)[1] = 2;
}
int main()
{
int* myArray = NULL;
FillArray(& myArray);
printf("%d", myArray[0]);
return 0;
}
到那时为止,一切都很好。然后,我修改了FillArray()函数,如下所示,以获得更好的代码可读性:
#include <stdio.h>
void FillArray(int** myArray)
{
int* temp = (*myArray);
temp = (int*) malloc(sizeof(int) * 2);
temp[0] = 1;
temp[1] = 2;
}
int main()
{
int* myArray = NULL;
FillArray(& myArray);
printf("%d", myArray[0]);
return 0;
}
现在,我在 printf 行收到以下运行时错误:
Trial.exe 中 0x773115de 处的未处理异常:0xC0000005:访问冲突读取位置 0x00000000。
尽管我不是 C 专家,但进行这种修改似乎是合法的。但是,显然它不起作用。语法是不是有点混乱?我在这里想念什么吗?
感谢您提供有用的答案,
坐下。