看板 C_and_CPP 關於我們 聯絡資訊
我想問一個指標的問題 下面是我打的程式碼(我是新手 請見諒) #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
james732:新手十戒3 11/15 12:06
snowlike:(int *)ptr=0 //int *ptr; ptr=NULL; 11/15 12:11
iamyu58:我不太懂樓上的意思耶 11/15 12:29
tokyobabylon:一般我宣告指標會用...int a=0;int*ptr=&a; 11/15 13:04
fragileness:ptr是一個pointer 想想你第一行到底讓什麼=0 11/15 13:58
snowlike:初始化要看作'int *'ptr 並不表示 *ptr=0 另NULL實際為0 11/15 15:40
jb0802:奇怪~~這個問題我照打~~結果沒問題ㄟ~~我用turbo C 11/16 12:48
jb0802:會跟語言有關係嗎?? 11/16 12:48
twotwoone:不明白為什麼 turbo c 編出這個指向0位址,取值也是0 11/16 13:44
twotwoone:因為 debug.exe 後跑 d 0000:0000 看到的不是0 11/16 13:45
twotwoone:不管怎樣,用 VC 跟 gcc 編出來 32位元console 程式會 11/16 13:45
twotwoone:記憶體存取錯誤,這是作業系統的保護。TC那是跑v86模式 11/16 13:46
twotwoone:就是在 dos 虛擬機器下跑的16位元程式,所以不會阻擋 11/16 13:46