[問題] pointer offset

看板C_and_CPP作者時間11年前 (2013/04/24 22:40), 編輯推噓2(205)
留言7則, 5人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 指標的位移應該是看該指標指向的類型來決定吧? 譬如 a 是指向整數的指標,則 a+1 的位址就是 a 的位址再加 4 那請問 void 指標的單位位移為什麼是 1 呢? 此外指向 void 指標的單位位移為什麼是 8 呢? 謝謝! 程式碼(Code):(請善用置底文網頁, 記得排版) void *a = NULL; a = a+1; printf("%p\n", a); void **b = NULL; b = b+1; printf("%p\n", b); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.171.233.210

04/24 22:45, , 1F
sizeof(void *) = 4 (32bits), 8 (64bits)
04/24 22:45, 1F

04/24 22:46, , 2F
因為你a指向的是void*,不是void
04/24 22:46, 2F

04/24 23:00, , 3F
對 void* 的指標運算是 undefined, 所以不能寫 a+1, purpose
04/24 23:00, 3F

04/24 23:00, , 4F
解釋了 b
04/24 23:00, 4F

04/24 23:50, , 5F
void * 可以做指標運算是 gnu extension (ref: #1AX7rb7h)
04/24 23:50, 5F

04/24 23:50, , 6F
我是指位移是 1 這回事 @@
04/24 23:50, 6F

04/24 23:54, , 7F
謝謝各位,我了解了
04/24 23:54, 7F
文章代碼(AID): #1HT-xfDH (C_and_CPP)