2015-10-19 71 views
0

我想通过发送指针地址到一个函数并在函数本身中创建动态分配来将值放入数组中。 分配后,我得到第一个索引中的第一个值。分配工作不正常

这是对于该问题的错误消息: 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]); 
    } 
} 

我不明白为什么我的代码不工作,试图找出它,但没有成功。

+2

哪里是'A'声明? –

+0

在'mamain()'中,'A'在哪里? – donjuedo

+1

请**你的问题与[mcve]或[SSCCE(Short,Self Contained,Correct Example)](http://sscce.org) – NathanOliver

回答

3

您已将malloc调用的结果分配给*A而不是A;因此,表达式*A是您的数组。由于[]具有比一元*更高的优先级,因此表达式*A[0]被解析为*(A[0]);这不是你想要的。

你需要明确组*运营商A做标前:

(*A)[0] = 5; 
(*A)[1] = 8; 
...