C数组64位递增

时间:2012-04-02 01:16:29

标签: c arrays pointers

我有:

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;

我该怎么做?

2 个答案:

答案 0 :(得分:3)

您可以像普通数组一样使用分配的内存:

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

修改 你正在做的是增加“数组”中的第一个条目,它可能包含你不期望的值,然后你重新分配指针使它不再指向你分配的内存,依此类推。此外,如果你真的想要“增加分配内存的地址”,它就像list++一样简单,但是这也改变了指针,因此你松开原来分配的地址,以后不能释放它(除非你保存它。)

答案 1 :(得分:2)

你可以使用循环

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