我试图通过将指针地址发送到函数并在函数本身中创建动态分配来将值放入数组中。 在分配之后,我得到第一个索引中的第一个值。
这是针对该问题的错误消息: ConsoleApplication1.exe中0x00941589处的未处理异常:0xC0000005:访问冲突写入位置0xCCCCCCCC。
这就是我所做的:
void mamain()
{
*A = NULL;
func(&A);
}
void func(int** A)
{
*A = (int*)malloc(sizeof(int) * 5);
*A[0] = 5;
*A[1] = 8;
*A[2] = 67;
*A[3] = 2;
*A[4] = 3;
for (int i = 0; i < 5; i++)
{
printf("%d,", *A[i]);
}
}
我不明白为什么我的代码不能正常工作,试图找出它但没有成功。
答案 0 :(得分:3)
您已将malloc
来电的结果分配给*A
,而不是A
;因此,表达式 *A
就是你的数组。由于[]
的优先级高于一元*
,因此表达式*A[0]
将被解析为*(A[0])
;这不是你想要的。
在执行下标之前,您需要使用*
明确地将A
运算符分组:
(*A)[0] = 5;
(*A)[1] = 8;
...