※ 引述《semmy214 (黃小六)》之銘言:
: https://imgur.com/a/2UjxBkw
: 106鐵路員級 計蓋
: 想問一下 swap 是變換變數值~
: 但指標值無法變換?
本題出 106年 鐵路人員考試 員級考試 電子工程 計算機概要 第25題
void swap(int a,int b,int *c,int *d)
{
int temp=a; //temp=1
a=b; //a=2
b=temp; //b=1
//a和b都是傳值呼叫,因此不會修改到main的i,j
temp=*c; //temp=3
*c=*d; //*c=4,因為是傳址呼叫,所以 main 的 m=4
*d=temp; //*d=3,因為是傳址呼叫,所以 main 的 n=3
}
int main()
{
int i=1,j=2,m=3,n=4;
swap(i,j,&m,&n);
//呼叫 swap 副程式 (並帶入i,j,&m,&n,注意:i,j是傳值呼叫,&m,&n是傳址呼叫)
printf("%d %d %d %d",i,j,m,n);
//故印出 1 2 4 3
return 0;
}
以上提供參考,小弟才疏學淺,如有說明錯誤,還請各位先進前輩不吝指教,謝謝。