我有無符號長,我期望成爲每個數組元素的4個字節(32位),這樣的陣列:爲什麼我的無符號長數組的指針增加8個字節而不是4個?
unsigned long giantbuffer[1024];
然而,當我打印出我的數組元素的我得到的地址:
printf("%X\n", &giantbuffer[0]); --> gives ab8470
printf("%X\n", &giantbuffer[1]); --> gives ab8478
也,
sizeof(giantbuffer) gives 8192, and sizeof(giantbuffer[0]) gives 8.
即每個數組元素八個字節!這是依賴於系統架構的東西嗎?我是C新手,所以也許這是一件顯而易見的事情?這對我的指針算術造成了巨大的破壞。我正在使用「ch」對我的語法做一些解釋器命令行樣式檢查等。也許這是該程序的問題?
爲什麼你期望'long'是4字節長?任何合理的64位體系結構/實施我知道定義的'long'作爲一個64位的類型。如果你想要一個特定大小的整(是的,Win64中並不算是一個明智的實現。) – 2013-10-30 06:41:19
,使用stdint.h –