[問題] C的空指標問題

看板C_and_CPP (C/C++)作者 (43米的深海)時間16年前 (2009/06/08 13:39), 編輯推噓6(609)
留言15則, 7人參與, 最新討論串1/1
大家好...最近遇到一個問題,但不知道為什麼會這樣,所以上來請教一下大家: #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

06/08 13:44, , 1F
因為 sizeof( double) = 8
06/08 13:44, 1F

06/08 13:51, , 2F
你怎麼不問++ptr1呢?
06/08 13:51, 2F

06/08 13:53, , 3F
++ptr1也想問...只是想先離清一開始的問題..
06/08 13:53, 3F

06/08 13:54, , 4F
指標+多少 就是看這指標形態的大小 就像一樓說的ptr是double
06/08 13:54, 4F

06/08 13:54, , 5F
一次就是前進了8byte
06/08 13:54, 5F

06/08 14:14, , 6F
那ptr1不是代表那個指標的指向的位址,怎麼印出來卻不是
06/08 14:14, 6F

06/08 14:15, , 7F
印出來的是位址沒錯呀
06/08 14:15, 7F

06/08 14:16, , 8F
還是說你想看到的是 0x0000000
06/08 14:16, 8F

06/08 14:27, , 9F
為什麼會覺得 0 不是位址呢 ?
06/08 14:27, 9F

06/08 14:44, , 10F
++ptr1這行的值,印出來應該是16
06/08 14:44, 10F

06/08 15:48, , 11F
我也覺得是16耶 仔細看
06/08 15:48, 11F

06/08 15:48, , 12F
你一開始指定他指到null阿 0 所以印出來是0
06/08 15:48, 12F

06/08 15:57, , 13F
最後一個++ptr1感覺應該是16阿@@
06/08 15:57, 13F

06/08 16:29, , 14F
不好意思各位...++ptr1的磪是16沒錯..我打錯了
06/08 16:29, 14F

06/08 16:33, , 15F
感謝各位的解答.....^^"
06/08 16:33, 15F
文章代碼(AID): #1ABAGSb2 (C_and_CPP)
文章代碼(AID): #1ABAGSb2 (C_and_CPP)