第一個傳的是值換的是函數(shù)里的新的xy,第二個傳的是地址,地址指向xy,因此做交換后,里面內容就換了唄,沒有生成新的xy
成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供市中網站建設、市中做網站、市中網站設計、市中網站制作等企業(yè)網站建設、網頁設計與制作、市中企業(yè)網站模板建站服務,10余年市中做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。
解答:
1.??? 注意形式參數(shù)和實際參數(shù)的區(qū)別,主函數(shù)中的x,y是實際參數(shù),swap函數(shù)中的a,b是形式參數(shù)。他們各有自己的存儲空間,互不干擾。
2.??? 在程序適當位置加上輸出地址的語句,即可看出為什么回到主程序后,x,y的值為什么不交換。
為了更形象,可以用圖表示它們的關系:
可見,交換的只是swap函數(shù)中的a,b值,對主函數(shù)中的a,b值沒有影響。
3. ? ?修改的方法,將swap的交換變成值的交換。
int swap(int *a,int *b)//a與b分別復制主函數(shù)x與y的值,即a與x的指向相同,b與y的指向相同
{
int *t;
{t=a;a=b;b=t;}//通過交換,a和y的指向相同,b與x的指向相同,但是,x與y沒有改變原來指向,這樣函數(shù)swap結束,a與b消失,輸出結果不變
}
換成
int t;
{t=*a;*a=*b;*b=t;}//將改變x和y指向的地址的值,達到交換目的
1、首先,就是最基本的知識,寫頭文件、函數(shù)聲明、定義變量。
2、下面還需要定義指針,需要定義兩個指針p1和p2,然后把a的地址賦值給p1,把b的地址賦值給p2。
3、然后就是調用函數(shù),該函數(shù)沒有返回值,就直接調用,但是參數(shù)進入的是a和b的地址,而不是a和b。
4、函數(shù)點用完之后,就是輸出a和b的值看一看是否互換了。
5、首先,a和b的地址傳給x和y,通過指針直接對a和b的值進行操作。
6、最后,就是調換*x和*y的值,這樣就是實現(xiàn)了a和b的值。
A錯:y值沒變;B錯:傳的不是指針,x和y都不變;C錯:和A一樣,y不變;D正確:傳的是指針,通過x和y的地址交換它們的值。