2012-04-02 87 views
0

我:數組c 64位增量

uint64_t *list; 

if((list = malloc(10 * sizeof(uint64_t))) == NULL){ 
    errx(1, "malloc"); 
} 

我需要填充這個數組,增加它的地址。

我的意思是:

(*list)++; 
list = 1; 
(*list)++; 
list = 2; 
(*list)++; 
list = 3; 
(*list)++; 
list = 4; 

我該怎麼辦呢?

+0

你有一個塊的10分uint64_t中的(數組),即大整數。你有一個指向數組的指針。如果增加'list',你將失去塊(數組),所以要麼需要第二個指針,要麼將它用作數組。列表[0] = 1,列表[1] = 2;沒關係。 – gbulmer 2012-04-02 01:19:04

+0

一個簡單的循環?就像...(for i = 0; i <10; i ++)list [i] =(unit_64_t)i;' – Imp 2012-04-02 01:19:43

+0

對不起,我忘記說我不能使用循環或普通方式:list [ 0] = 1;列表[1] = 2; – 2012-04-02 01:33:45

回答

3

您可以使用分配的內存像一個正常的數組:

list[0] = 1; 
list[1] = 2; 
/* etc. */ 

編輯: 什麼,你正在做的是增加「陣列」,它可能包含你沒有一個值中的第一項期望,那麼你重新分配指針,使其不再指向你分配的內存,等等。另外,如果你真的想「分配內存的地址」,它只是簡單的,如list++,但是這也改變了指針,所以你鬆開了原來分配的地址,並且以後不能釋放它(除非你保存它)。

2

,你可以使用一個循環

for(int i = 0; i < 10; i++) { 
    list[i] = i+1; 
}