只是一個愚蠢的問題: 我有一個簡單的計數器,但它似乎給出了我期望的雙重價值。int和++新增每次增加2
short int *new = 0;
++new;
NSLog(@"Items: %hi", new);
這將返回:
項目:2
相對較新的可可,和仍在制定的小細節,是上述明確形式......
只是一個愚蠢的問題: 我有一個簡單的計數器,但它似乎給出了我期望的雙重價值。int和++新增每次增加2
short int *new = 0;
++new;
NSLog(@"Items: %hi", new);
這將返回:
項目:2
相對較新的可可,和仍在制定的小細節,是上述明確形式......
你沒有一個整數變量,你有一個指針到一個整數變量(一個短整數,具體)。它增加2,因爲短整數是兩個字節長。指針變量保存另一個值的內存地址。遞增指針意味着「使該指針指向內存中的下一個事件」,其中「thing」是該指針被聲明指向的值的類型。指向double
的指針每次增加8。
聲明中的「*」使其成爲指針。如果你只是想一個int,你只寫
short int new = 0;
++new;
啊哈,當你增加一個指針,以增量它由它持有的對象大小。您正在查看地址,而不是數字。
做到這一點,而看
short int *new = 0;
NSLog(@"Items now: %hi", new);
++new;
NSLog(@"Items then: %hi", new);
因爲你定義new
的方式是一個指向整數,*new
。您將存儲器位置設置爲包含short int
,這是一個16位整數,因此佔用內存中的兩個字節。因此,增加第二行意味着增加內存位置2.
我不認爲你打算處理內存位置。定義一個整數並控制其在內存中的位置有點奇怪,除非在特定情況下。你想要什麼,會做的代碼是:
short int new = 0;
++new;
NSLog(@"Items: %hi", new);
+1,當C++編碼,我這樣做太多次>< – 2011-02-03 14:25:42