看板 C_and_CPP 關於我們 聯絡資訊
#include <stdio.h> #include <stdlib.h> void show(int,int,int *,int *); int main(void) { int a=28,b=16; int *ptr1,*ptr2; printf("a=%2d, b=%2d\n",a,b); show(a,b,ptr1,ptr2); ptr1=&b; /* 將ptr1設為a的位址 */ show(a,b,ptr1,ptr2); ptr2=&a; /* 將ptr2設為b的位址 */ show(a,b,ptr1,ptr2); *ptr1=4; show(a,b,ptr1,ptr2); a=16; show(a,b,ptr1,ptr2); *ptr2=12; show(a,b,ptr1,ptr2); ptr2=ptr1; /* 設定ptr1=ptr2 */ show(a,b,ptr1,ptr2); *ptr1=19; show(a,b,ptr1,ptr2); ptr1=&a; show(a,b,ptr1,ptr2); a=7; show(a,b,ptr1,ptr2); *ptr2=*ptr1; show(a,b,ptr1,ptr2); system("pause"); return 0; } void show(int a,int b,int *p1,int *p2) { printf("a=%2d, b=%2d, ",a,b); printf("ptr1=%p, *ptr2=%2d\n",p1,*p1); printf("ptr1=%p, *ptr2=%2d\n",p2,*p2); }想請問各位大大 這題題目是說印出美一步驟各參數與指標的值 可是我怎麼看程式都沒有問題 為甚麼會當掉且值只跑兩行? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.125.225.198
johnlinvc:十戒第三條 使用不知指向何處的指標 02/10 17:19
james732:你第一次show的時候,ptr1與ptr2並沒有指向有效的位址 02/10 17:19
james732:int *p; printf("%d", *p); 這樣會當掉,看一下一樓說的 02/10 17:20
povertytrap:了解謝謝各位= = 02/10 17:20
povertytrap:可是解答指標沒給初值一樣有寫前面兩行函數耶? 02/10 17:24
james732:哪一本書? 02/10 17:24
qrtt1:要用 debugger 看啊orz 02/10 17:24
povertytrap:C語言教學手冊第四版 02/10 17:25
povertytrap:我不會用debugger= = 02/10 17:25
james732:debugger教學 http://ppt.cc/0ogg 02/10 17:29
james732:另外合理的懷疑是書本寫錯了 02/10 17:29
povertytrap:謝謝 樓上各位 02/10 17:31