#include <stdio.h>int main(){? int *p1,*p2,*p,a,b;? printf("integer numbers:"); scanf("%d,%d",&a,&b); ? p1=&a;? ? p2=&b;? if(a<b)? { /* p=p1; p1=p2; p2=p;*/ p1=&b;//為什么這樣就出問題? p2=&a; }? printf("a=%d,b=%d\n",a,b); printf("%d,%d\n",*p1,*p2);? return 0;}
2 回答
已采納

MadMarical
TA貢獻79條經驗 獲得超122個贊
你好。我想你的問題是出于,為何輸出的a,b實際上并沒有交換。理由是,你只改變了指針的指向,并未改變a,b內存地址中存儲的值。而如果使用注釋段內的代碼,a,b內存地址中存儲的值是進行了交換的。
- 2 回答
- 0 關注
- 1346 瀏覽
添加回答
舉報
0/150
提交
取消