函數(shù)間數(shù)據(jù)傳遞方式_第1頁
函數(shù)間數(shù)據(jù)傳遞方式_第2頁
函數(shù)間數(shù)據(jù)傳遞方式_第3頁
函數(shù)間數(shù)據(jù)傳遞方式_第4頁
函數(shù)間數(shù)據(jù)傳遞方式_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

函數(shù)間數(shù)據(jù)傳遞方式第1頁,課件共11頁,創(chuàng)作于2023年2月函數(shù)之間的數(shù)據(jù)傳遞函數(shù)之間的邏輯聯(lián)系是通過函數(shù)調(diào)用實(shí)現(xiàn)的,在函數(shù)調(diào)用過程中,函數(shù)之間的數(shù)據(jù)聯(lián)系則是由函數(shù)間的數(shù)據(jù)傳遞建立的。在C語言中,函數(shù)間數(shù)據(jù)傳遞有3種方式:

★參數(shù)傳遞

★函數(shù)返回值

★全局變量第2頁,課件共11頁,創(chuàng)作于2023年2月參數(shù)傳遞函數(shù)間參數(shù)傳遞是指把變量或常量的有關(guān)信息傳遞給函數(shù),而傳遞的過程發(fā)生在函數(shù)調(diào)用期間函數(shù)間參數(shù)傳遞的數(shù)據(jù)類型可以是變量、數(shù)組、指針、結(jié)構(gòu)以及函數(shù)等在函數(shù)調(diào)用時(shí),實(shí)參和形參不是靠名稱相同來傳遞數(shù)據(jù),而是靠對(duì)應(yīng)位置來傳遞數(shù)據(jù),這就要求形參和實(shí)參在數(shù)據(jù)類型、個(gè)數(shù)和順序上一一對(duì)應(yīng)函數(shù)間傳遞參數(shù)方式有兩種:傳值與傳址第3頁,課件共11頁,創(chuàng)作于2023年2月傳值在傳值方式下,調(diào)用函數(shù)將實(shí)參的數(shù)據(jù)復(fù)制到被調(diào)用函數(shù)的形參中,使得形參取得對(duì)應(yīng)的值例:#include<stdio.h>voidswap(int,int);main(){inta,b;scanf(“%d%d”,&a,&b);printf(“a=%d,b=%d\n”,a,b);swap(a,b);

printf(“a=%d,b=%d\n”,a,b);}voidswap(intx,inty){intt;

t=x;x=y;y=t;

printf(“x=%d,y=%d\n”,x,y);}傳值調(diào)用的時(shí)候,形參跟實(shí)參各自占用自己的存儲(chǔ)空間,當(dāng)形參發(fā)生改變時(shí),不會(huì)影響實(shí)參的值。當(dāng)調(diào)用結(jié)束時(shí),程序返回調(diào)用函數(shù),形參的存儲(chǔ)單元就被撤銷。傳值法的最大特點(diǎn)是實(shí)參和形參占有不同的存儲(chǔ)單元,形參只能復(fù)制實(shí)參的值而不能改變實(shí)參的值,這對(duì)隱藏?cái)?shù)據(jù)特別有利第4頁,課件共11頁,創(chuàng)作于2023年2月傳址在傳址的方式下,調(diào)用函數(shù)將實(shí)參的地址復(fù)制到對(duì)應(yīng)的參數(shù)中去,形參通過地址讀取實(shí)參的數(shù)據(jù)。由于實(shí)參和形參指向同一地址,因而共享同一存儲(chǔ)單元中的數(shù)據(jù)。傳值方式就是通過指針進(jìn)行傳遞。例:#include<stdio.h>voidswap(int*,int*);main(){inta,b;scanf(“%d%d”,&a,&b);printf(“a=%d,b=%d\n”,a,b);swap(&a,&b);

printf(“a=%d,b=%d\n”,a,b);}voidswap(int*x,int*y){intt;

t=*x;*x=*y;*y=t;

printf(“x=%d,y=%d\n”,*x,*y);}ab&a&bxy傳址是將實(shí)參地址傳給形參,當(dāng)形參地址所指的值發(fā)生改變時(shí),實(shí)際就是實(shí)參對(duì)應(yīng)地址所指的值發(fā)生了改變。當(dāng)被調(diào)用函數(shù)執(zhí)行完了之后,形參也會(huì)被撤銷掉。

傳址最大特點(diǎn)就是被調(diào)用函數(shù)的形參所指向的變量就是調(diào)用函數(shù)中的變量。第5頁,課件共11頁,創(chuàng)作于2023年2月形參與實(shí)參類型對(duì)于形參和實(shí)參在傳遞時(shí),需要注意參數(shù)類型的對(duì)應(yīng)總體原則是形參與實(shí)參的數(shù)據(jù)類型要一致,具體對(duì)應(yīng)類型參考書上P193的表10-1例題:輸入10個(gè)整數(shù),編寫一個(gè)函數(shù),返回這10個(gè)整數(shù)的平均值第6頁,課件共11頁,創(chuàng)作于2023年2月參數(shù)傳遞使用數(shù)組名作函數(shù)參數(shù),即使在定義形參的時(shí)候定義為“inta[10]”類似的形式,但編譯系統(tǒng)并不單獨(dú)開辟存儲(chǔ)區(qū)存放形參數(shù)組,實(shí)參不是把值一個(gè)一個(gè)傳給形參,而是把實(shí)參數(shù)組的起始地址傳給形參。這樣,形參數(shù)組與實(shí)參數(shù)組共享存儲(chǔ)空間,當(dāng)形參數(shù)組中元素值發(fā)生變化時(shí),實(shí)參數(shù)組的值也會(huì)發(fā)生變化。編譯系統(tǒng)不對(duì)形參數(shù)組大小作檢查,因此一維數(shù)組可以不指定大小,數(shù)組名后直接跟個(gè)空的方括號(hào),數(shù)組的元素個(gè)數(shù)可以用其他參數(shù)來傳遞。二維數(shù)組名也可以做實(shí)參和形參,在定義形參時(shí),可以將二維數(shù)組的第一維大小省略。例如:

intmax(intb[][5])第7頁,課件共11頁,創(chuàng)作于2023年2月參數(shù)傳遞例題:最長(zhǎng)相似字符串

輸入2個(gè)字符串(每個(gè)字符串長(zhǎng)度不超過255),從第一個(gè)字符開始對(duì)比兩個(gè)字符串,檢查下兩個(gè)字符串相同位置上的連續(xù)字符串最長(zhǎng)長(zhǎng)度是多少。例如字符串“student”和字符串“study”,兩者最長(zhǎng)相似字符串長(zhǎng)度為4,字符串“welcometousaco”和字符串“forcomedtousaco”的最長(zhǎng)相似字符串長(zhǎng)度是8第8頁,課件共11頁,創(chuàng)作于2023年2月函數(shù)返回值對(duì)于函數(shù)的返回值類型,可以是整型、實(shí)型、字符型,也可以是指針類型,即返回1個(gè)地址。當(dāng)函數(shù)返回值是地址時(shí),稱該函數(shù)是指針函數(shù)指針函數(shù)類型定義:

數(shù)據(jù)類型*函數(shù)名(形參表)

{函數(shù)體;}第9頁,課件共11頁,創(chuàng)作于2023年2月函數(shù)返回值例題:截取字符串

給定一個(gè)字符串(長(zhǎng)度小于255),指定兩個(gè)整數(shù)m和n,從給定的字符串中截取出從第m個(gè)字符開始連續(xù)n個(gè)字符,作為1個(gè)新的字符串輸出。例如給定字符串為“informationsystem”,m值為6,n值為6,則截取出來的新字符串為“mation”第10頁,課件共11頁,創(chuàng)作于2023年2月練習(xí)書P214的第5題(1.c/1.in/1.out)輸入2行整數(shù),每行有5個(gè)整數(shù),將兩行整數(shù)對(duì)應(yīng)位置的數(shù)進(jìn)行比較,如果上1行的某個(gè)位置值比下1行對(duì)應(yīng)位置上的值大或者相等,則輸出“+”,否則輸出“-”,注意,輸出結(jié)果總共有5個(gè)“+”號(hào)和“-”號(hào),每個(gè)符號(hào)中間用1個(gè)空格隔開。例如輸入“1123579”和“77132189”,則輸出“-+--+”.(2.c/2.in/2.out)查找最長(zhǎng)‘*’號(hào)串:有一串字符串,里面有一些‘*’號(hào),定義從某個(gè)‘*’號(hào)開始到下一個(gè)‘*’出現(xiàn)之前或者字符串尾,中間字符串的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論