2012-04-02 8 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

を使用することができます。配列へのポインタがあります。 'list'をインクリメントすると、ブロック(配列)が失われますので、2番目のポインタが必要になるか、配列として使用するだけです。リスト[0] = 1、リスト[1] = 2;大丈夫。 – gbulmer

+0

シンプルなfor-cycle? (int i = 0; i <10; i ++)list [i] =(unit_64_t)i; ' – Imp

+0

私はループや通常の方法を使うことができないと言って忘れてしまった:list [ 0] = 1;リスト[1] = 2; –

答えて

3

あなたは、通常の配列のように割り当てられたメモリを使用することができます。

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

編集:何をやっている は、おそらくそうしない値が含まれている「アレイ」の最初のエントリの増加であるがあなたが割り当てられたメモリを指していないようにポインタを再割り当てする、などのようにします。また、実際に割り当てられたメモリの "アドレスをインクリメント"したい場合は、list++という単純なものですが、ポインタを変更して元の割り当てられたアドレスを失い、後で解放することはできません(保存しない限り)。

2

あなたがブロック10のuint64_tの年代(配列)、すなわち大きな整数を持つループ

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