版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第十二章函數參數12目標掌握函數參數按值傳遞掌握函數參數按指針傳遞掌握函數參數為數組類型掌握全局變量和局部變量3按值傳遞函數參數在默認情況下的傳值方式按值傳遞是賦值過程,當修改了形參的值,不會改變實參的值4#include"stdio.h"http://聲明并定義函數voidchangeParaValue(intpara1){ para1++; printf("函數內形參值為:%d\n",para1);}//主函數voidmain(){ inti; i=10; printf("調用函數前值為:%d\n",i); changeParaValue(i);//調用函數,i作為實參傳入
printf("調用函數后值為:%d\n",i);}5交換值功能#include"stdio.h"voidswap(inti,intj){ inttmp; tmp=i; i=j; j=tmp;}voidmain(){ intx,y; x=1; y=4; swap(x,y);}通過函數使變量的兩個值交換是否能夠實現我們需要另外的值傳遞方式6指針作為函數參數函數的參數可以是簡單數據類型,也可以是指針類型。使用指針類型做函數的參數,實際向函數傳遞的變量的值是一個地址。7#include"stdio.h"http://定義并聲明函數changeValue,該函數有一個參數,該參數的類型為指針voidchangeValue(int*p){ (*p)++;//對該指針變量所指向的值進行自增}voidmain(){ inta,*pi; a=10; pi=&a; printf("調用函數前變量值:%d\n",*pi); //調用函數,由于該函數的參數為一個指針參數,所以傳一個指針變量
changeValue(p); printf("調用函數后變量值:%d\n",*pi);}8#include"stdio.h"http://swap函數實現了互換兩個變量的值voidswap(int*px,int*py){ inttmp; tmp=*px; *px=*py; *py=tmp;}voidmain(){ intm,n,*pm,*pn; m=3; n=12; pm=&m; pn=&n; printf("調用函數前變量m=%d,n=%d\n",m,n); swap(pm,pn); printf("調用函數后變量m=%d,n=%d\n",m,n);}&m&n312&m12&n3pmmpnnpxmpyn實參的值賦給形參9數組作為函數參數數組名包含了數組中第一個元素的地址當用數組作為參數時,傳遞的就是數組中第一個元素的地址我們可以給函數加一個參數,該參數就是用來傳遞數組長度給函數的10#include"stdio.h"intgetLargest(intarr[],intlength){ intmax,i; max=arr[0]; for(i=0;i<length;i++) { if(max<arr[i]) { max=arr[i]; } } returnmax;}voidmain(){ intinputArr[10],i,max; printf("請輸入10個數字。\n"); //通過循環輸入10個數字
for(i=0;i<10;i++) {scanf("%d",&inputArr[i]); } //調用getLargest函數,該函數返回一個數組中的最大值
max=getLargest(inputArr,10); //輸出最大值
printf("最大值為:%d",max);}01236789inputArr數組arr11voidmain(){ intarr[10],arrLength,max; //調用輸入輸入函數
arrLength=inputArr(arr); //得到最大值
max=getLargest(arr,arrLength); //輸出最大值
printf("最大值為:%d\n",max);}#include"stdio.h"intinputArr(intarr[]){ charin,i; intcount=0 printf("請輸入數字。\n"); for(i=0;i<10;i++) { scanf("%d",&arr[i]); count++; getchar(); printf("是否繼續輸入?(y/n)"); scanf("%c",&in); if(in=='n'||in=='N') { break;//用戶停止輸入,退出循環
} } returncount;//這個count的值就是用戶輸入的數量}intgetLargest(intarr[],intlength){ intmax,i; max=arr[0];
for(i=0;i<length;i++) { if(max<arr[i]) {max=arr[i]; } } returnmax;}12局部變量和全局變量局部變量是在函數內部定義的變量,其作用域為它所在的函數內全局變量是函數外聲明的變量。其作用域為從定義變量的位置開始到程序結束,其它任何函數都能訪問。13變量的作用域限于陸地限于水中限于空中14局部變量15全局變量#include"stdio.h"intgm=1,gn=3;//聲明兩個全局變量gm和gn//聲明并定義函數f1,該函數返回類型為int,有一個int類型參數intf1(intt){intr;r=t+gm;//使用全局變量gmreturnr;}voidmain(){intx,y;x=10;y=f1(x)+gn;//使用全局變量gn}16變量的存儲類型自動的(auto)靜態的(static)寄存器(register)外部的(extern)17靜態的(static)#include"stdio.h"voidfunc(intcount){ staticintm=0; intn=0; m=m+1; n=n+1; printf("第%d次調用函數的時候:m=%d,n=%d\n",count,m,n);}voidmain(){ inti; for(i=0;i<10;i++) {func(i);}}18總結在默認情況下,函數是按值傳遞函數的參數可以是我們在前面學過的簡單數據類型,也可以是指針類型。使用指針類型做函數的參數,實際向函數傳遞的變量的值是一個地址。函數參數是數組時,實際傳遞的是數組的首地址。所謂的作用域就是程序中的那些部分可以訪問哪些變量,哪些變量在哪些地方不能被別人訪問。局部變量
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 業務員勞務合同(2026版)
- 宿州蕭縣選調教師筆試真題2025
- 湖南邵陽學院附屬第二醫院招聘筆試真題2025
- 2026 年汛期居家防災安全防范指南
- 2026年感染性疾病科隔離防護護理操作
- 護理崗位發生隱私泄露事件應急處置流程
- 電力公司運行管理準則
- 化工園區安全管理規范
- 2026七年級數學下冊期末試題分類匯編(人教版) 平面直角坐標系(原卷版)
- 2025年人教版四年級道德與法治上冊全冊知識點
- 新疆油氣田鉆井固體廢物綜合利用污染控制要求(DB 65-T 3997-2017)
- 中國融通資源開發集團有限公司物資接收、倉儲人員專項招聘87人筆試模擬試題及答案詳解
- 2026年共青團入團考試試題附標準答案
- 2026鄭州市新初一三科分班摸底卷摸底卷
- 2026年渭南市大荔縣數學三下期末統考模擬試題含答案
- (2024版)中國成人暴發性心肌炎診斷和治療指南課件
- (2026年)痔瘡的診斷和治療健康宣教課件
- 老年人慢性病管理與護理
- (2026年)血氣分析臨床解讀課件
- 分布式光伏開發建設導則
- 給水用聚乙烯(pe)管道系統第部分管件
評論
0/150
提交評論