次の部分を含むコードがあります。
typedef unsigned long long int ulli_t;
typedef unsigned int obj_t;
// --- SOME UNIMPORTANT PART OF CODE
objects = (obj_t*)malloc(hw*sizeof(obj_t));
objNums = (ulli_t*)calloc(hw, sizeof(ulli_t));
printf("%#x, %#x\n", objects, objNums);
// --- SOME UNIMPORTANT CODE
/// NEXT PART IS for-CYCLED
objNums[k] ++;
if (k>=Nobj) {
objects[k] = obj;
Nobj++;
printf(" %lu - %#x - %#x\n", k, objects+k, objNums+k);
};
そして、私はコードのこの部分の出力を持っています:
0xaafdf9d8, 0xaad693b0
0 - 0 - 0xaafdf9d8
1 - 0 - 0xaafdf9dc
2 - 0 - 0xaafdf9e0
3 - 0 - 0xaafdf9e4
4 - 0 - 0xaafdf9e8
5 - 0 - 0xaafdf9ec
6 - 0 - 0xaafdf9f0
7 - 0 - 0xaafdf9f4
8 - 0 - 0xaafdf9f8
9 - 0 - 0xaafdf9fc
10 - 0 - 0xaafdfa00
11 - 0 - 0xaafdfa04
だから、ここに質問があります-'objects'変数がゼロ以外の場合、なぜ'objects + k'はゼロですか?私が作るとき:
printf(" %lu - %#x - %#x\n", k, objects[k], objNums[k]);
私は次のような行を取得します:
value of k - 0 - hex value of objNums[k]
何故ですか?私はすでにそのことを考えて脳を壊しました。