2015-10-19 137 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; 
...