函數(shù)間的雙向傳遞_第1頁(yè)
函數(shù)間的雙向傳遞_第2頁(yè)
函數(shù)間的雙向傳遞_第3頁(yè)
函數(shù)間的雙向傳遞_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、函數(shù)的參數(shù)不僅可以是整型、實(shí)型、字符型等數(shù)據(jù),還可以是變量的指針,它將一個(gè)變量的首地址從主調(diào)函數(shù)傳送到另一個(gè)函數(shù)中,以間接的方式,實(shí)現(xiàn)了函數(shù)間數(shù)據(jù)的雙向傳遞。譚浩強(qiáng)先生用一個(gè)簡(jiǎn)單的例子:輸入兩個(gè)整數(shù),按大小順序輸出,用函數(shù)處理,說(shuō)明了指針的這類應(yīng)用。 1、【例】輸入的兩個(gè)整數(shù)按大小順序輸出, 用函數(shù)處理,而且用指針類型的數(shù)據(jù)作函數(shù)參數(shù)。swap(int *p1,int *p2)   int temp;   temp=*p1;   *p1=*p2;   *p2=temp;main() int a,b; &#

2、160;  int *pointer_1,*pointer_2;    scanf("%d,%d",&a,&b);    pointer_1=&a;pointer_2=&b;    if(a<b)          swap(pointer_1,pointer_2);    printf("n%d,%dn&qu

3、ot;,a,b);對(duì)程序的說(shuō)明:       swap是用戶定義的函數(shù),它的作用是交換兩個(gè)變量(a和b)的值。swap函數(shù)的形參p1、p2是指針變量。程序運(yùn)行時(shí),先執(zhí)行main函數(shù),輸入a和b的值。然后將a和b的地址分別賦給指針變量pointer_1和pointer_2,使pointer_1指向a,pointer_2指向b。      接著執(zhí)行if語(yǔ)句,由于ab,因此執(zhí)行swap函數(shù)。注意實(shí)參pointer_1和pointer_2是指針變量,在函數(shù)調(diào)用時(shí),將實(shí)參變量的值傳遞給形參變量。

4、采取的依然是“值傳遞”方式。因此虛實(shí)結(jié)合后形參p1的值為&a,p2的值為&b。這時(shí)p1和pointer_1指向變量a,p2和pointer_2指向變量b。      接著執(zhí)行執(zhí)行swap函數(shù)的函數(shù)體使*p1和*p2的值互換,也就是使a和b的值互換。函數(shù)調(diào)用結(jié)束后,p1和p2不復(fù)存在(已釋放)如圖。最后在main函數(shù)中輸出的a和b的值是已經(jīng)過(guò)交換的值。進(jìn)一步分析如下:       表面上看,由于a和b是main()的局部變量,他們的作用域就是main()的函數(shù)體,因此a,

5、b對(duì)于swap()是不可見(jiàn)的,即swap()不能對(duì)a和b賦值,也不能使用a和b中的數(shù)據(jù)進(jìn)行運(yùn)算;       但是,當(dāng)我們通過(guò)使用指針參數(shù)pointer1和pointer2,將&a、&b這2個(gè)地址從main()傳入了swap();那么,swap()通過(guò)該地址,就可以找到main()的a,b,從而使得swap()就象main()一樣,可以直接對(duì)a、b賦值,或直接用a、b中的值進(jìn)行運(yùn)算。       這樣一來(lái),主調(diào)函數(shù)main()可以存取a、b,而被調(diào)函數(shù)swap()通過(guò)傳入的地址,也可以存取a、b。我們說(shuō)a、b在main()和swap()間被共享了。       既然變量都被共享

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論