![第三章 模塊化程序設計03.ppt_第1頁](http://file1.renrendoc.com/fileroot2/2020-1/16/eba6d788-7dc1-4931-a62d-4b9130e89ae4/eba6d788-7dc1-4931-a62d-4b9130e89ae41.gif)
![第三章 模塊化程序設計03.ppt_第2頁](http://file1.renrendoc.com/fileroot2/2020-1/16/eba6d788-7dc1-4931-a62d-4b9130e89ae4/eba6d788-7dc1-4931-a62d-4b9130e89ae42.gif)
![第三章 模塊化程序設計03.ppt_第3頁](http://file1.renrendoc.com/fileroot2/2020-1/16/eba6d788-7dc1-4931-a62d-4b9130e89ae4/eba6d788-7dc1-4931-a62d-4b9130e89ae43.gif)
![第三章 模塊化程序設計03.ppt_第4頁](http://file1.renrendoc.com/fileroot2/2020-1/16/eba6d788-7dc1-4931-a62d-4b9130e89ae4/eba6d788-7dc1-4931-a62d-4b9130e89ae44.gif)
![第三章 模塊化程序設計03.ppt_第5頁](http://file1.renrendoc.com/fileroot2/2020-1/16/eba6d788-7dc1-4931-a62d-4b9130e89ae4/eba6d788-7dc1-4931-a62d-4b9130e89ae45.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、2020年8月1日星期六,濟南大學信息學院,第三章 模塊化程序設計,3.1 模塊化程序設計思想 3.2 函數(shù)定義 3.3 函數(shù)調用 3.4 函數(shù)的原型與聲明 3.5 函數(shù)的嵌套與遞歸 3.6 庫函數(shù) 3.7 變量的作用域與存儲類型 3.8 指針與函數(shù),2020年8月1日星期六,濟南大學信息學院,3.6 庫函數(shù),庫函數(shù):即系統(tǒng)已經定義好、具有特定功能的函數(shù)。這些函數(shù)可以直接使用,不必重新定義,但使用時需要用#include命令把相應的頭文件包含進來。,輸入輸出函數(shù)(頭文件:stdio.h): printf( ) scanf( ) getchar( ) putchar( ),數(shù)學函數(shù)(頭文件:ma
2、th.h): sqrt( ) pow( ) fabs( ) log10( ) log( ),字符串函數(shù)(頭文件:string.h): strcpy( ) strcat( ) strcmp( ) strlen( ),各函數(shù)的功能見附錄,使用時注意參數(shù)個數(shù)及類型、函數(shù)的返回值。,2020年8月1日星期六,濟南大學信息學院,3. 變量的作用域與存儲類型,3.7.1 變量的作用域,作用域:指變量能夠起作用的程序范圍,2020年8月1日星期六,濟南大學信息學院,1 局部變量,#include int max(int x, int y) int z; if (xy) z=x; else z=y; retu
3、rn(z); void main( ) int a,b,c; scanf(%d%d, ,1、局部變量: 指在一個函數(shù)或復合語句內部(位于一對花括號之間)定義的變量;只在本函數(shù)或復合語句的范圍內有效,x、y、z的有效范圍,a、b、c的有效范圍,2020年8月1日星期六,濟南大學信息學院,2、說明: 、main函數(shù)中定義的變量是局部變量,只能在main函數(shù)中使用,、不同函數(shù)中可以使用相同名字的變量,它們占用不同的內存單元,互相獨立 、形式參數(shù)也是局部變量 、復合語句中定義的變量,其作用域只是本復合語句,void main( ) int a, b; int c; c=a+b; ,c在此范圍內有效,a
4、、b在此范圍內有效,2020年8月1日星期六,濟南大學信息學院,#include void main( ) int i,a=0; for (i=1; i=2; i+) int a=1; a+; printf(i=%d, a=%dn, i, a); printf(i=%d, a=%dn, i, a); ,i=1, a=2 i=2, a=2 i=3, a=0,EG311.C,2020年8月1日星期六,濟南大學信息學院,2 全局變量,1、定義: 全局變量:指在所有函數(shù)外部定義的變量,又稱外部變量 可以為本文件中其它函數(shù)所共用,其有效范圍為:從定義變量的位置開始到本源文件結束,2、例:,2020年8月
5、1日星期六,濟南大學信息學院,#include int p=1, q=5; float f1( int a ) float r ; : int s; int f2( int b , int c ); int sum; : float m, n; void main( ) float x, y; : ,2020年8月1日星期六,濟南大學信息學院,3、說明: 、全局變量增加了函數(shù)間的數(shù)據(jù)聯(lián)系; 由于在同一文件中的所有函數(shù)都能使用全局變量, 所以可以利用全局變量從函數(shù)中得到一個以上的返回值,、建議不要過多的使用全局變量,全局變量在程序的執(zhí)行過程中一直占用存儲單元 它使函數(shù)的通用性降低 會降低程序的清
6、晰性,EG312.C,2020年8月1日星期六,濟南大學信息學院,、全局變量在定義時如果沒有初始化,它們則會被系統(tǒng)自動初始化為零,而局部變量在定義時不會自動初始化。 、若全局變量與局部變量同名,則在局部變量的作用范圍內,全局變量不起作用,int a=3, b=5; int max(int a, int b) int c; c=ab ? a : b; return(c); void main( ) int a=8; printf(%d, max(a, b) ); ,形參a、b的作用域 全局變量a、b不起作用,局部變量a的作用域 全局變量b的作用域 全局變量a不起作用,EG313.C,2020年8
7、月1日星期六,濟南大學信息學院,3.7.2 變量的存儲類型,變量的存儲類型是指存儲變量值的內存類型。它決定變量何時創(chuàng)建、何時銷毀以及它的值將保存多久。 變量的存儲類型可分為“靜態(tài)存儲”和“動態(tài)存儲”兩種。,靜態(tài)存儲變量通常是在變量定義時就分配存儲單元并一直保持不變,直到整個程序結束。全局變量即屬于此類存儲方式。 動態(tài)存儲變量是在程序執(zhí)行過程中,使用到它時才分配存儲單元,使用完畢立即釋放。如形參,函數(shù)被調用時才分配內存單元,函數(shù)調用完畢立即釋放。,2020年8月1日星期六,濟南大學信息學院,局部變量的存儲類別:,1、函數(shù)中的局部變量,如不專門聲明或用auto聲明,稱為自動變量或動態(tài)變量。通常au
8、to被省略。在前面各章中所學習到的變量都屬于auto變量。,int b, c=3; float f;,auto int b,c=3; auto float f;,2、局部靜態(tài)變量(static) 函數(shù)被調用時分配內存單元,函數(shù)調用結束后不釋放占用內存單元,直到程序運行結束才釋放存儲單元,即在整個程序的運行中不釋放存儲單元。,static int i,area; static int a10;,2020年8月1日星期六,濟南大學信息學院,比較下列兩個程序的輸出結果:,#include void fun(int x) int a=0; a+=2; printf(x=%d,a=%dn,x,a); v
9、oid main( ) int i; for (i=1;i=3;i+) fun(i); ,#include void fun(int x) static int a=0; a+=2; printf(x=%d,a=%dn,x,a); void main( ) int i; for (i=1;i=3;i+) fun(i); ,x=1,a=2 x=2,a=2 x=3,a=2,x=1,a=2 x=2,a=4 x=3,a=6,EG315.C,2020年8月1日星期六,濟南大學信息學院,說明:若對變量賦初值,對于自動變量,每次調用都要重新分配內存單元并賦初值;而對于靜態(tài)變量,只執(zhí)行一次,再次調用函數(shù)時不再
10、賦初值而保留上次函數(shù)調用結束時的值;,#include void fun(int x) static int a=0; a+=2; printf(x=%d,a=%dn,x,a); void main( ) int i; for (i=1;i=3;i+) fun(i); ,x=1,a=2 x=2,a=4 x=3,a=6,EG316.C,說明: 對于動態(tài)變量,定義時若不賦值,值不確定 對于靜態(tài)變量,定義時若不賦值,系統(tǒng)自動賦值為0,2020年8月1日星期六,濟南大學信息學院,2.6 指針程序設計,1、地址 在計算機中,把內存區(qū)劃分為一個一個的存儲單元,每個單元為一個字節(jié)(位),它們都有一個編號,這
11、個編號就是內存單元的地址。,說明: 1、每個變量都占有各自的內存單元,具有相應的地址 。 2、一個變量所占有的內存單元個數(shù)是由其類型決定的。 3、首地址:變量所占第1個字節(jié)的地址,2020年8月1日星期六,濟南大學信息學院,變量的訪問方式 直接訪問:通過變量名或變量名所對應的地址訪問變量的存儲區(qū),存取其值。,int x; x=3; printf(“x=%dn”, x);,間接訪問:將一個變量的地址存放在另一個變量中 ,使用時先找到后者的地址,再從中取出前者的地址。,2020年8月1日星期六,濟南大學信息學院,指針變量的概念 存放變量地址的變量, 它用來指向另一個變量。,某個變量的地址,指針變量
12、:存放變量的地址,指向,指針的概念 由于通過地址能找到所需的變量單元,地址象一根針一樣“指向”該變量單元。所以將地址形象的稱為:“指針”。,2020年8月1日星期六,濟南大學信息學院,指針變量的定義 基類型名 *指針變量名=初始值;,例:int *p; p是指向整型變量的指針變量 float x,*q= r是?,說明 基類型名是指針變量指向的變量的數(shù)據(jù)類型 在變量定義時, * 號表示該變量是指針變量,不可省 ,以和普通變量區(qū)別。 注意:指針變量名是p,而不是*p,*在定義時只是個符號。,2020年8月1日星期六,濟南大學信息學院,指針變量的賦值 定義指針變量時進行初始化,或使用賦值語句。 指針
13、變量定義后,若不賦值,其值是不確定的(野指針) 兩個運算符 :取地址運算符。 可作用于一般變量或指針變量 * :指針運算符(在非定義時)只能作用于指針變量,(使用賦值語句給指針變量賦值) 例:int *p, x; x = 3; p = 把x的地址賦給p, 即p指向x,(定義時初始化) int x, *p=,(通過其它指針賦值) int i, *p1=,(還可以給指針變量附空值) p=NULL;,2020年8月1日星期六,濟南大學信息學院,使用指針變量時,需注意的幾個問題: 只能用同類型變量的地址給指針變量賦值 例:int x, *p; p=相同。,2020年8月1日星期六,濟南大學信息學院,例
14、:指針變量的賦值操作 #include void main() int a, b; int *p1, *p2; a=100; b=10; p1= ,100,10,a,b,p1,p2,*p1,*p2,結果: 100,10 100,10,2020年8月1日星期六,濟南大學信息學院,例-1: #include void main() int a, b; int *p1, *p2; a=100; b=10; p1 = ,100,10,a,b,p1,p2, int *p1= ,100,10,a,b,p1,p2, p= ,2020年8月1日星期六,濟南大學信息學院,例2.24 輸入兩個數(shù),并按從大到小輸出
15、,用指針完成。,一定注意兩種不同的程序設計方法。,重要,2020年8月1日星期六,濟南大學信息學院,3.8 指針與函數(shù),例3.10:在主函數(shù)中輸入兩個整數(shù)a和b,編寫函數(shù)交換a、b的值,void main( ) int a,b; printf(Input a,b:); scanf(%d%d, ,#include void swap(int x, int y) int temp; temp=x; x=y; y=temp; ,EG317.C,2020年8月1日星期六,濟南大學信息學院,例3.10即: #include void swap(int a, int b) int t; t=a; a=b;
16、 b=t; void main( ) int x5, y10; printf(“交換前:%d, %dn”, x,y); swap(x, y); printf(“結束后:%d, %dn”, x, y); ,10,main,swap,5,10,5,5,10,5,輸出結果: 交換前:5, 10 結束后:5, 10,2020年8月1日星期六,濟南大學信息學院,3.8.1 指針作為函數(shù)參數(shù),1、形參:只需要形參前加上一個*即可。 如:void swap(int *pa, int *pb),2、說明 函數(shù)中可以通過形參引用實參的地址,從而可以改變該地址的值,即實參變量的值。,void main( ) in
17、t a; fun( ,void fun(int *pa) *pa=10; ,2020年8月1日星期六,濟南大學信息學院,void main( ) int x5, y9; int *p1, *p2; p1 = , t=*a; *a=*b; *b=t; ,2020年8月1日星期六,濟南大學信息學院,#include void swap(int *pa, int *pb) int t; t=*pa; *pa=*pb; *pb=t; void main( ) int a, b; printf(Input a, b: ); scanf(%d%d, ,EG322.C,如何通過函數(shù)調用達到改變某個變量的值? 分三步: 1、在主調函數(shù)中,把該變量的地址作為實參 2、在被調函數(shù)中,用形參(指針)接受該地址 3、在被調函數(shù)中,改變形參(指針)所指向變量的值,而不是形參本身的值(地址),2020年8月1日星期六,濟南大學信息學院,例:編寫函數(shù),求三個整數(shù)的和以及平均值。用指針
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年電視自動校時鐘項目可行性研究報告
- 2025至2031年中國牛仔布拔染印花漿行業(yè)投資前景及策略咨詢研究報告
- 2025年杭竹青酒項目可行性研究報告
- 2025年支架節(jié)能燈項目可行性研究報告
- 2025年左擋板項目可行性研究報告
- 2025年咖啡豆油項目可行性研究報告
- 2025年冷軋鋼帶項目可行性研究報告
- 2025至2030年驅動變壓器高頻電感項目投資價值分析報告
- 2025至2030年金屬折疊濾芯項目投資價值分析報告
- 2025至2030年中國醋酸甲地孕酮片數(shù)據(jù)監(jiān)測研究報告
- 無菌技術操作-PPT課件
- 公司辦公室5S管理規(guī)定(實用含圖片)
- 人教版小學五年級數(shù)學下冊教材解讀
- JTT888-2020公共汽車類型劃分及等級評定_(高清-最新)
- 某天然氣公司場站設備管理制度
- 臨時碼頭施工方案
- 汶川地震災后恢復重建生產力布局和產業(yè)調整專項規(guī)劃
- 教師專業(yè)發(fā)展與職業(yè)生涯規(guī)劃優(yōu)秀課件
- 稅務師事務所收費標準
- 電力工程施工單位如何提升管理辦法
- 商場撤場申請書
評論
0/150
提交評論