【发布时间】:2012-05-03 21:10:42
【问题描述】:
我问了这个问题:Pass array by reference using 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 专家,但进行这种修改似乎是合法的。但是,显然它不起作用。语法是不是有点混乱?我错过了什么吗?
感谢您的有用回答,
坐下。
【问题讨论】: