[問題] 指標問題

看板C_and_CPP (C/C++)作者 (我是誰)時間14年前 (2009/11/15 12:00), 編輯推噓4(409)
留言13則, 7人參與, 最新討論串2/13 (看更多)
我想問一個指標的問題 下面是我打的程式碼(我是新手 請見諒) #include<stdio.h> int main() { int *ptr=0; printf("ptr:%d\n",*ptr); printf("ptr+1:%d\n",(*ptr)+1); printf("ptr+2:%d\n",(*ptr)+2); return 0; } 為什麼執行結果會有錯? 我原本預期的是 ptr:0 ptr+1:1 ptr+2:2 請大家幫我解惑 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.47.69.60

11/15 12:06, , 1F
新手十戒3
11/15 12:06, 1F

11/15 12:11, , 2F
(int *)ptr=0 //int *ptr; ptr=NULL;
11/15 12:11, 2F

11/15 12:29, , 3F
我不太懂樓上的意思耶
11/15 12:29, 3F

11/15 13:04, , 4F
一般我宣告指標會用...int a=0;int*ptr=&a;
11/15 13:04, 4F

11/15 13:58, , 5F
ptr是一個pointer 想想你第一行到底讓什麼=0
11/15 13:58, 5F

11/15 15:40, , 6F
初始化要看作'int *'ptr 並不表示 *ptr=0 另NULL實際為0
11/15 15:40, 6F

11/16 12:48, , 7F
奇怪~~這個問題我照打~~結果沒問題ㄟ~~我用turbo C
11/16 12:48, 7F

11/16 12:48, , 8F
會跟語言有關係嗎??
11/16 12:48, 8F

11/16 13:44, , 9F
不明白為什麼 turbo c 編出這個指向0位址,取值也是0
11/16 13:44, 9F

11/16 13:45, , 10F
因為 debug.exe 後跑 d 0000:0000 看到的不是0
11/16 13:45, 10F

11/16 13:45, , 11F
不管怎樣,用 VC 跟 gcc 編出來 32位元console 程式會
11/16 13:45, 11F

11/16 13:46, , 12F
記憶體存取錯誤,這是作業系統的保護。TC那是跑v86模式
11/16 13:46, 12F

11/16 13:46, , 13F
就是在 dos 虛擬機器下跑的16位元程式,所以不會阻擋
11/16 13:46, 13F
文章代碼(AID): #1A_tpOdy (C_and_CPP)
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
5
21
完整討論串 (本文為第 2 之 13 篇):
1
1
4
13
5
21
13
58
5
39
1
28
1
9
文章代碼(AID): #1A_tpOdy (C_and_CPP)