看板 C_and_CPP 關於我們 聯絡資訊
大家好...最近遇到一個問題,但不知道為什麼會這樣,所以上來請教一下大家: #include <stdlib.h> #include <stdio.h> int main() { double *ptr1 = 0; printf("ptr1's postion:%d\n",ptr1); printf("ptr1+1:%d\n",ptr1+1); printf("ptr1+2:%d\n",ptr1+2); printf("ptr1++:%d\n",ptr1++); printf("++ptr1:%d\n",++ptr1); return 0; } 列印出來的答案是 ptr1's postion:0 ptr1+1:8 ptr1+2:16 ptr1++:0 ++ptr1:8 可以跟我解釋一下為何ptr1是空指標時,ptr1+1時會出現8 ? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.22.20.210
Ebergies:因為 sizeof( double) = 8 06/08 13:44
QQ29:你怎麼不問++ptr1呢? 06/08 13:51
vtr198172:++ptr1也想問...只是想先離清一開始的問題.. 06/08 13:53
QQ29:指標+多少 就是看這指標形態的大小 就像一樓說的ptr是double 06/08 13:54
QQ29:一次就是前進了8byte 06/08 13:54
vtr198172:那ptr1不是代表那個指標的指向的位址,怎麼印出來卻不是 06/08 14:14
littleshan:印出來的是位址沒錯呀 06/08 14:15
littleshan:還是說你想看到的是 0x0000000 06/08 14:16
ledia:為什麼會覺得 0 不是位址呢 ? 06/08 14:27
phstudy:++ptr1這行的值,印出來應該是16 06/08 14:44
QQ29:我也覺得是16耶 仔細看 06/08 15:48
QQ29:你一開始指定他指到null阿 0 所以印出來是0 06/08 15:48
weiyucsie:最後一個++ptr1感覺應該是16阿@@ 06/08 15:57
vtr198172:不好意思各位...++ptr1的磪是16沒錯..我打錯了 06/08 16:29
vtr198172:感謝各位的解答.....^^" 06/08 16:33