




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第八章 函數(shù) 8.1 概述 8.2 函數(shù)定義 8.3 函數(shù)參數(shù)和函數(shù)值 8.4 函數(shù)調(diào)用 8.5 函數(shù)嵌套調(diào)用 8.6 函數(shù)遞歸調(diào)用 8.7 數(shù)組作為函數(shù)參數(shù) 8.8 局部變量和全局變量 8.9 變量存儲類別第八章 目錄第1頁第1頁8.1 概述8.1 概述mainabcdefghhieg第2頁第2頁8.1 概述#include “stdio.h”void printstar()printf(“* * * * * * * * * *n”);void print_message()printf(“ How do you do!n”);void main()printstar(); print_me
2、ssage(); printstar();例.簡樸函數(shù)調(diào)用。運(yùn)營結(jié)果* * * * * * * * * * How do you do!* * * * * * * * * *第3頁第3頁8.1 概述(1) 一個C 程序由一個或多個源程序文獻(xiàn)構(gòu)成。闡明(2) 一個源程序文獻(xiàn)由一個或多個函數(shù)構(gòu)成。(3) C 程序執(zhí)行從 main 函數(shù)開始,調(diào)用其它函 數(shù)后返回到main 函數(shù),在main函數(shù)中結(jié)束整 個程序運(yùn)營。(4) 所有函數(shù)都是平行,即在定義函數(shù)時是互相 獨(dú)立,函數(shù)不能嵌套定義。函數(shù)間能夠互相 調(diào)用,但不能調(diào)用main函數(shù)。第4頁第4頁8.1 概述(5) 從函數(shù)使用角度來看,C語言函數(shù)能夠分
3、為兩類:原則庫函數(shù)和用戶自定義函數(shù)。 原則庫函數(shù)與頭文獻(xiàn)執(zhí)行效率高,用戶需要時,可在程序中直接進(jìn)行調(diào)用。C語言庫函數(shù)所用到常量、外部變量、函數(shù)類型和參數(shù)闡明,都在相應(yīng)頭文獻(xiàn)(.h)中申明,這些文獻(xiàn)通常存儲在系統(tǒng)目錄include。 用戶自定義函數(shù) 無參函數(shù) 有參函數(shù)第5頁第5頁8.2 函數(shù)定義8.2 函數(shù)定義有參函數(shù)定義形式一函數(shù)值類型 函數(shù)名(形式參數(shù)類型及參數(shù)闡明) 申明部分 語句 函數(shù)返回值類型,能夠是簡樸類型、void類型或結(jié)構(gòu)類型等。函數(shù)名是函數(shù)標(biāo)識符,遵循C語言標(biāo)識符命名規(guī)則,區(qū)別大小寫。如: int max( int a, int b) 形式參數(shù)簡稱形參。注意:無論函數(shù)是否有形式
4、參數(shù),圓括號不可省。第6頁第6頁8.2 函數(shù)定義有參函數(shù)定義形式二函數(shù)值類型 函數(shù)名(形式參數(shù)列表)形式參數(shù)闡明 申明部分 語句 如: int max( a, b) int a, b; 第7頁第7頁8.2 函數(shù)定義例.定義符號函數(shù)sign。int sign( int x ) int y; y=x0 ? 1: (x=0 ? 0: -1); return y; /*函數(shù)返回值類型未闡明,默認(rèn)為int,提議給出函數(shù)類型闡明*/*形式參數(shù)闡明*/*函數(shù)局部變量*/*返回函數(shù)值*/第8頁第8頁8.3 函數(shù)參數(shù)和函數(shù)值8.3 函數(shù)參數(shù)和函數(shù)值1. 形式參數(shù)和實際參數(shù)實參調(diào)用函數(shù)使用參數(shù)形參定義函數(shù)使用參數(shù)
5、單向值傳遞復(fù)制單向值傳遞方式是指在函數(shù)調(diào)用時,將實參之值傳遞給相應(yīng)形式參數(shù),使形參含有與實參相同值。 第9頁第9頁8.3 函數(shù)參數(shù)和函數(shù)值例.調(diào)用函數(shù)時數(shù)據(jù)傳遞。#include “stdio.h”int max( int x, int y ) /*定義有參函數(shù)*/ int z; z=xy ? x: y; return (z);運(yùn)營情況7,8Max is 8abxyvoid main() int a, b, c; scanf(“%d,%d”,&a,&b); c=max(a, b); printf(“Max is %dn”,c);第10頁第10頁8.3 函數(shù)參數(shù)和函數(shù)值相關(guān)形參與實參幾點(diǎn)闡明:實
6、參能夠是常量、變量或表示式。無論是何種類型,函數(shù)調(diào)用時,必須有擬定值,以便將值傳遞給形參。在函數(shù)定義中指定形參,未調(diào)用時,它們不占用存儲單元。只有調(diào)用該函數(shù)時,形參才被分派空間,函數(shù)調(diào)用結(jié)束后,形參所占存儲單元被釋放。 第11頁第11頁8.3 函數(shù)參數(shù)和函數(shù)值實參加形參數(shù)據(jù)傳遞為單向傳遞,只可由實參向形參傳遞,不能由形參傳回實參。實參加形參處于不同函數(shù)中,作用區(qū)域不同,即使實參加形參同名,也是不同變量。定義函數(shù)時,必須指定形參類型。調(diào)用函數(shù)時,實參類型、個數(shù)及排列順序應(yīng)與形參一一相應(yīng)。第12頁第12頁8.3 函數(shù)參數(shù)和函數(shù)值2. 函數(shù)返回值功效 用于結(jié)束函數(shù)執(zhí)行并返回到調(diào)用者。 用來向主調(diào)函數(shù)
7、傳遞一個返回值。return語句表示形式 return 表示式; or return(表示式); 第13頁第13頁8.3 函數(shù)參數(shù)和函數(shù)值int sign( int x ) int y; return y=x0 ? 1: (x=0 ? 0: -1);if(x0) return(1);else if(xy ? x: y; return (z);void main() float a, b, c; scanf(“%f,%f”,&a,&b); c=max(a,b); printf(“Max is %fn”,c);運(yùn)營情況1.5, 2.5Max is 2.000000第16頁第16頁8.3 函數(shù)參數(shù)和
8、函數(shù)值注意:為了明確表示“不帶返回值”,能夠用“void”定義“無類型”。此時函數(shù)體內(nèi)不得出現(xiàn)return語句。如:void main( ) 第17頁第17頁8.3 函數(shù)參數(shù)和函數(shù)值例.寫出下列程序運(yùn)營結(jié)果。max( ) /*函數(shù)類型缺省,為int型,return語句缺省*/ 運(yùn)營結(jié)果-256,-256 /*返回值不擬定,TC2返回值為0*/min( ) /*函數(shù)類型缺省,return語句缺省*/ main( )printf(%d,%dn,max(),min());第18頁第18頁8.4 函數(shù)調(diào)用8.4 函數(shù)調(diào)用1. 函數(shù)調(diào)用形式 函數(shù)名(實參表列)一個函數(shù)一旦被定義,就可在程序 其它函數(shù)中使
9、用它,這個過程稱為函 數(shù)調(diào)用。闡明:實際參數(shù)之間以“,”分隔。實參與形參應(yīng)保持個數(shù)、順序及類型一致,以確保實參與形參之間數(shù)據(jù)正確傳遞。實參普通為表示式,能夠是常量、變量(調(diào)用時必須有擬定值或擬定地址)。形參必須為變量。第19頁第19頁8.4 函數(shù)調(diào)用函數(shù)調(diào)用三種形式函數(shù)語句調(diào)用函數(shù)表示式調(diào)用函數(shù)參數(shù)調(diào)用在函數(shù)調(diào)用后加“;”,構(gòu)成一個語句。目的是執(zhí)行一個動作或完畢特定功效。函數(shù)調(diào)用作為表示式一部分。被調(diào)用函數(shù)執(zhí)行結(jié)果為主調(diào)函數(shù)提供一個值。主調(diào)函數(shù)通過表示式接受值。被調(diào)函數(shù)作為某個函數(shù)一個參數(shù)。第20頁第20頁8.4 函數(shù)調(diào)用例.函數(shù)語句調(diào)用與函數(shù)表示式調(diào)用。#include “stdio.h”v
10、oid main()printf(nk1=%d, printf(nk2);運(yùn)營結(jié)果k2k1=3第21頁第21頁8.4 函數(shù)調(diào)用例.函數(shù)參數(shù)調(diào)用形式調(diào)用函數(shù)max2 。#include “stdio.h”int max2( int x, int y ) /*求兩個數(shù)中較大*/ int z; return (z=xy ? x: y);void main() int a, b, c; scanf(“%d,%d,%d”,&a,&b,&c); printf(“Max is %dn”, max2(max2(a,b),c); / *內(nèi)層函數(shù)max2值作為外層函數(shù)max2實參,整個函數(shù)max2值又作函數(shù)pri
11、ntf實參*/ 第22頁第22頁8.4 函數(shù)調(diào)用2. 函數(shù)申明調(diào)用用戶自定義函數(shù)時,普通在主調(diào)函數(shù)中對被調(diào)用函數(shù)返回值類型、函數(shù)名稱、函數(shù)形參類型進(jìn)行闡明,這種闡明稱為函數(shù)申明。#include “stdio.h”void main() float add(float x, float y); /*對被調(diào)用函數(shù)申明*/ float a,b,c; scanf(“%f,%f”,&a,&b); c=add(a,b); printf(“sum is %fn”, c);float add(float x, float y) /*函數(shù)首部*/ return(x+y); /*函數(shù)體*/第23頁第23頁8.4
12、 函數(shù)調(diào)用函數(shù)申明普通形式:類型 函數(shù)名(類型1 形參1,類型2 形參2,);注意:函數(shù)申明是以語句形式出現(xiàn),因此其后有語句結(jié)束標(biāo)識“ ; ”。類型 函數(shù)名(類型1,類型2,);第24頁第24頁8.4 函數(shù)調(diào)用下列兩種情況,能夠省略對被調(diào)用函數(shù)申明:若函數(shù)定義放在主調(diào)函數(shù)之前,遵循先定義后調(diào)用原則,函數(shù)申明能夠省略。第25頁第25頁8.4 函數(shù)調(diào)用#include “stdio.h”float add(float x, float y) /*函數(shù)首部*/ return(x+y); /*函數(shù)體*/ void main() float a,b,c; scanf(“%f,%f”,&a,&b); c=
13、add(a,b); printf(“sum is %fn”, c);第26頁第26頁8.4 函數(shù)調(diào)用假如已在所有函數(shù)定義之前,在函數(shù)外部已做了函數(shù)申明,則在各個主調(diào)函數(shù)中不必對所調(diào)用函數(shù)再作申明。第27頁第27頁8.4 函數(shù)調(diào)用比如:char letter(char, char); float f(float, float); void main( ) char letter(char c1, char c2) float f(float x, float y) 第28頁第28頁8.4 函數(shù)調(diào)用例.判斷兩個數(shù)大小。#include “stdio.h”void main() int f(int,
14、 int); int i=2, p; p=f( i, i+); printf(“%dn”, p);f(int a, int b) int c; if(ab) c=1; else if (a=b) c=0; else c=-1; return(c);運(yùn)營結(jié)果:1第29頁第29頁8.4 函數(shù)調(diào)用例.編程求兩個整數(shù)階乘之和。void main()int n1,n2; long sum; long fac(int); /* fac函數(shù)申明* / scanf(%d,%d,&n1,&n2); sum=fac(n1)+fac(n2); printf(%d!+%d!=%ldn, n1,n2,sum);/*定義
15、函數(shù)fac,其功效是求n!*/long fac(int n) int i; long r=1; for(i=1;i=n;i+) r=r*i; return r;第30頁第30頁8.5 函數(shù)嵌套調(diào)用8.5 函數(shù)嵌套調(diào)用定義所謂函數(shù)嵌套調(diào)用是指一個函數(shù)調(diào)用另一函數(shù)過程中又出現(xiàn)對其它函數(shù)調(diào)用。這種嵌套調(diào)用層次原則上不限制。main函數(shù)1調(diào)用函數(shù)12函數(shù)1調(diào)用函數(shù)234函數(shù)25678結(jié)束9第31頁第31頁8.5 函數(shù)嵌套調(diào)用例. 用弦截法求方程根辦法:xy第32頁第32頁8.5 函數(shù)嵌套調(diào)用N-S流程圖輸入x1、x2,求f(x1)、f(x2)直到f(x1)和f(x2)異號真假x1=xy1=yx2=xy
16、2=y直到|y|0) x1=x; y1=y; else x2=x; while(fab(y)=1e-4); return(x);第35頁第35頁8.5 函數(shù)嵌套調(diào)用 /*續(xù)上*/void main() /*主函數(shù)*/float x1, x2, f1, f2, x; do printf(input x1,x2:n); scanf(%f, %f , &x1, &x2); f1=f(x1); f2=f(x2); while(f1*f2=0); x=root(x1,x2); printf(x=%.4fn, x);運(yùn)營情況input x1,x2:2, 6x=5.0000第36頁第36頁8.5 函數(shù)嵌套調(diào)
17、用main函數(shù)調(diào)用root函數(shù)root函數(shù)調(diào)用xpoint函數(shù)xpoint函數(shù)輸出根x結(jié)束調(diào)用f函數(shù)f函數(shù)第37頁第37頁8.6 函數(shù)遞歸調(diào)用8.6 函數(shù)遞歸調(diào)用定義在調(diào)用一個函數(shù)過程中又出現(xiàn)直接或間接地調(diào)用該函數(shù)本身。直接調(diào)用間接調(diào)用f函數(shù)調(diào)用f函數(shù)f1函數(shù)調(diào)用f2函數(shù)f2函數(shù)調(diào)用f1函數(shù)第38頁第38頁8.6 函數(shù)遞歸調(diào)用無論是直接還是間接遞歸,兩者都是無終止調(diào)用本身。要避免這種情況發(fā)生,使用遞歸處理問題應(yīng)滿足兩個基本條件:問題轉(zhuǎn)化。有些問題不能直接求解或難以求解,但能夠轉(zhuǎn)化為一個新問題,這個新問題相對較原問題簡樸或更靠近處理辦法。這個新問題處理與原問題同樣,能夠轉(zhuǎn)化為下一個新問題,。轉(zhuǎn)化
18、終止條件。原問題到新問題轉(zhuǎn)化是有條件、次數(shù)是有限,不能無限次數(shù)地轉(zhuǎn)化下去。這個終止條件也稱為邊界條件。第39頁第39頁8.6 函數(shù)遞歸調(diào)用分析:例. 有5個人,問第5個人多少歲?他說比第4個人大 2歲,第4個人說比第3個人大2歲,第3個人說比 第2個人大2歲,第2個人說比第1個人大2歲,第 1個人說他10歲。請問第5個多大。第40頁第40頁8.6 函數(shù)遞歸調(diào)用age(5)=age(4)+2age(4)=age(3)+2age(3)=age(2)+2age(2)=age(1)+2age(1)=10age(2)=12age(3)=14age(4)=16age(5)=18回推遞推第41頁第41頁8.
19、6 函數(shù)遞歸調(diào)用參考程序:int age(int n) /*求年齡遞歸函數(shù)*/int c; if(n=1) c=10; else c=age(n-1)+2; return(c);#include “stdio.h”void main() /*主函數(shù)*/printf(%dn,age(5);age(5)c=age(4)+2c=age(1)+2c=10輸出age(5)age函數(shù)n=5age函數(shù)n=2age函數(shù)n=1age(5) =18age(1) =10age(2) =12main第42頁第42頁8.6 函數(shù)遞歸調(diào)用分析: (1) 用遞推法,123n。 (2) 用遞歸法:例. 用遞歸法求n !。第4
20、3頁第43頁8.6 函數(shù)遞歸調(diào)用參考程序:float fac(int n) float k; if(n=1) k=1; else k=n*fac(n-1); return(k);void main()int n; float y; scanf(%d,&n); y=fac(n); printf(%d!=%.0fn,n,y);fac(5)k=fac(4)*5k=fac(1)*2k=1輸出fac(5)fac函數(shù)n=5fac函數(shù)n=2fac函數(shù)n=1fac(5) =120fac(1) =1fac(2) =2main第44頁第44頁8.6 函數(shù)遞歸調(diào)用例. 漢諾(Hanoi)塔問題。這是一個古典數(shù)學(xué)問題
21、,只能用遞歸辦法處理。問題是這樣:有三個底座,A座上放著64個盤子,小在上,大在下,目的是把64個盤子從A座移到C座上,B座作為中間過渡。每次只能移動一個盤子,并且大盤子不能放在小上面。ABC第45頁第45頁8.6 函數(shù)遞歸調(diào)用分析:把3個盤子從A座移到C座過程:(1) 將A上2個盤子移到B(借助C)。(2) 將A上1個盤子移到C。(3) 將B上2個盤子移到C(借助A)。ACABCBACBBABCAC第46頁第46頁8.6 函數(shù)遞歸調(diào)用分析:對于把n(n1)個盤子從A座移到C座問題能夠分解成下列環(huán)節(jié):(1) 將n-1個盤子從A通過C移動到B。(2) 將第n個(最底下)盤子移動到C。(3) 再將
22、n-1個盤子從B通過A移動到C。 這樣就把移動n個盤子問題轉(zhuǎn)化為移動n-1個盤子問題,即移動n個盤子問題可用移動n-1個盤子問題遞歸描述,以這類推,可轉(zhuǎn)化為移動一個盤子問題。顯然,一個盤子就能夠直接移動。第47頁第47頁8.6 函數(shù)遞歸調(diào)用#include “stdio.h”void main() int n; void hanoi(int, char, char, char); void move(char, char); printf(Input n:); scanf(%d, &n); hanoi(n, A, B, C); /*n個盤子從A座通過B座移動C座*/參考程序:int i=0;
23、/*i為移動次數(shù),為全局變量*/void move(char from, char to) i+; printf(%d=%c-%cn,i,from,to);第48頁第48頁8.6 函數(shù)遞歸調(diào)用void hanoi(int n, char src, char t, char dest)/*將n個盤子從src借助t移到dest */if(n=0) return; if(n=1) move(src, dest); else hanoi(n-1, src, dest, t); /*將n-1個盤子從src經(jīng)t移到dest*/ move(src, dest); /*將最底下盤子從src移到dest */
24、hanoi(n-1, t, src, dest); /*將n-1個盤子從t經(jīng)src移到dest*/ 第49頁第49頁8.7 數(shù)組作為函數(shù)參數(shù)8.7 數(shù)組作為函數(shù)參數(shù)1.數(shù)組元素作函數(shù)實參單向值傳遞使用時與普通變量同樣。 在函數(shù)調(diào)用時將值傳遞給實參形參第50頁第50頁8.7 數(shù)組作為函數(shù)參數(shù)例. 數(shù)組中有10個整型元素,求數(shù)組中所有素數(shù)之和。#include math.h #include stdio.hvoid main()int a10, i, s=0; int prime(int); printf(請輸入10個整數(shù):n); for(i=0;i10;i+) scanf(%d, &ai); i
25、f(prime(ai) s+=ai; printf(sum=%dn, s); int prime(int x)int f=1, k ; if(x=1) f=0 ; els for(k=2;k=sqrt(x);k+) if(x%k=0) f=0; break ; return(f) ; 第51頁第51頁8.7 數(shù)組作為函數(shù)參數(shù)2.數(shù)組名作函數(shù)參數(shù)地址傳遞方式,實參加形參共地址,相稱于對同一對象兩個不同名字。實參與形參都應(yīng)用數(shù)組名(或指針變量)。 在函數(shù)調(diào)用時將其地址值傳遞給實參形參第52頁第52頁8.7 數(shù)組作為函數(shù)參數(shù)例. 分析下面程序運(yùn)營結(jié)果。#include “stdio.h”int f(
26、int b , int m, int n) int i, s=0;for(i=m-1; in; i+) s=s+bi;return s ;void main() int x, a=1, 2, 3, 4, 5, 6, 7, 8, 9; x=f(a, 3 , 7); printf(%dn,x);運(yùn)營結(jié)果253a24a35a46a57a68a79a82a11a0起始地址1000b2b3b4b5b6b7b8b1b0第53頁第53頁8.7 數(shù)組作為函數(shù)參數(shù)例.用選擇法對數(shù)組中10個整數(shù)從小到大排序。#include “stdio.h”void sort(int b, int n)int i, j, k,
27、 t; for(i=0;in-1;i+) min=i; for(j=i+1; jn; j+) if(bjbmin) min=j; t=bi; bi=bmin; bmin=t; void main()int a10, i; printf(請輸入10個整數(shù):n); for(i=0; i10; i+) scanf(%d,&ai); sort(a, 10); printf(排序后為:n); for(i=0; i10; i+) printf(%6d,ai); printf(n);第54頁第54頁8.7 數(shù)組作為函數(shù)參數(shù)闡明實參數(shù)組與形參數(shù)組類型應(yīng)一致。C編譯對形參數(shù)組大小不做檢查,因此形參數(shù)組能夠不指定
28、大小。 數(shù)組名作函數(shù)參數(shù)時,是把實參數(shù)組首地址傳遞給形參數(shù)組,這樣兩個數(shù)組共用一段內(nèi)存單元。在主調(diào)函數(shù)和被調(diào)用函數(shù)中要分別定義數(shù)組。 第55頁第55頁8.7 數(shù)組作為函數(shù)參數(shù)3.多維數(shù)組名作函數(shù)參數(shù)多維數(shù)組名能夠作為實參和形參,在被調(diào)用函數(shù)中對形參數(shù)組定義時能夠省略第一維大小。多維數(shù)組元素能夠作為實參,使用時與普通變量同樣。 在函數(shù)調(diào)用時將其地址值傳遞給實參形參第56頁第56頁8.7 數(shù)組作為函數(shù)參數(shù)例. 求34矩陣中最大值。#include “stdio.h”int max(int array4) int i, j, m=array00; for(i=0; i3; i+) for(j=0;j
29、4;j+) if(mb?a:b; int z; z=a*a; return z;第64頁第64頁8.9 變量存儲類別隨函數(shù)調(diào)用而存在,隨函數(shù)返回而消失,它們在一次調(diào)用結(jié)束到下一次調(diào)用開始之間不再占有存儲空間。 作用域局限于所定義函數(shù),其生存期就是函數(shù)生存期。假如不初始化,其值是不擬定;假如初始化,則賦值操作是在調(diào)用時進(jìn)行(不是編譯時),且每次調(diào)用都要重新賦一次初值。第65頁第65頁2.靜態(tài)(static)局部變量8.9 變量存儲類別定義格式:static 數(shù)據(jù)類型 變量表;函數(shù)內(nèi)部定義靜態(tài)變量。作用域與自動型變量相同。當(dāng)所在函數(shù)執(zhí)行結(jié)束后,靜態(tài)變量所占內(nèi)存單元并不釋放,其值仍然保留。注意:把局
30、部變量改變?yōu)殪o態(tài)局部變量后,改變了它生存期。第66頁第66頁8.9 變量存儲類別例.考察靜態(tài)局部變量值。 #include “stdio.h”int f(int a)int b=0; static int c=3; b+; c+; printf(%d %d %d,a,b,c); return(a+b+c);void main() int a=2,k; for(k=0;k3;k+) printf(%5dn,f(a);運(yùn)營結(jié)果2 1 4 72 1 5 82 1 6 9結(jié)論:局部靜態(tài)變量只賦初值一次,以后每次調(diào)用函數(shù)時不再重新賦初值,而是保留上次函數(shù)調(diào)用結(jié)束時值。第67頁第67頁8.9 變量存儲類別
31、例.考察靜態(tài)局部變量值。 #include “stdio.h”int fun(int n)static int f=1; f=f * n; return( f );void main() int k; for(k=1;ky?x:y; return (z);void main()extern int A, B; /*申明外部變量*/ printf(“%dn”,max(A,B);int A=13, B=-8; /*定義外部變量*/第72頁第72頁8.9 變量存儲類別(2) 在多文獻(xiàn)程序中申明外部變量若變量定義與引用處于不同源文件中,則需要在引用該變量源文件中對它進(jìn)行申明,然后源文件或文件中函數(shù)才干
32、引用它,即將變量作用域延伸到其它源文件。在引用外部變量 文獻(xiàn)中不會為其分派內(nèi)存空間。第73頁第73頁8.9 變量存儲類別例.用extern將外部變量作用域擴(kuò)展到其它文獻(xiàn)。#include “stdio.h” int A=1;/在s.c文獻(xiàn)定義了全局變量A*/void fun() /*在函數(shù)fun中引用變量A不必申明*/void main() /*在函數(shù)main中引用變量A不必申明*/ extern A; /*申明變量A為一個已定義外部變量*/void fac(int n) A=A*n; /*在函數(shù)fac外已申明A為外部變量,函數(shù)fac能夠引用A*/*源文獻(xiàn)s.c*/*源文獻(xiàn)d.c*/第74頁第
33、74頁8.9 變量存儲類別5.用static申明外部變量在程序設(shè)計中假如希望一些外部變量只限于被本文獻(xiàn)引用,而不能其它文獻(xiàn)引用。能夠在定義外部變量時加一個static申明。file1.cstatic int A;void main()file2.cextern int A;void fun(int n) A=A*n; 第75頁第75頁8.9 變量存儲類別注意:對局部變量用static申明,則改變了該變量生存期,使它在整個程序執(zhí)行期間不釋放,為其分派空間始終存在。對全局變量用static申明,則改變了該變量作用域,即只限于本文獻(xiàn)模塊使用。靜態(tài)外部變量函數(shù)外部定義靜態(tài)變量。作用域僅限所在源程序文獻(xiàn)。第76頁第76頁關(guān)于變量申明和定義8.9 變量存儲類別定義:建立存儲空間申明 申明:不建立存儲空間申明注意:外部變量定義和
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年光學(xué)纖維倒像器合作協(xié)議書
- 2025年HB步進(jìn)電機(jī)合作協(xié)議書
- 2025年醋酸乙酯合作協(xié)議書
- 檔案代管合同
- 商業(yè)門面租賃合同
- 2025年單相電能表合作協(xié)議書
- 二零二五年度能源項目采購合同與銷售合同環(huán)保評估
- 二零二五年度專屬育兒嫂住家家政服務(wù)協(xié)議
- 二零二五年度農(nóng)民工勞動合同規(guī)范文本(健康養(yǎng)老設(shè)施建設(shè))
- 2025年度航空航天發(fā)動機(jī)研發(fā)企業(yè)股權(quán)轉(zhuǎn)讓合同
- 2024年全國公共營養(yǎng)師之三級營養(yǎng)師考試重點(diǎn)試題(附答案)
- 管道工(三級)高級工題庫(電子題庫)附有答案
- 小學(xué)預(yù)防性侵害主題班會
- DZ∕T 0080-2010 煤炭地球物理測井規(guī)范(正式版)
- 《微波法原油含水率在線檢測儀》
- 第1課 立足時代 志存高遠(yuǎn) (課件+視頻)- 【中職專用】高一思想政治《心理健康與職業(yè)生涯》(高教版2023·基礎(chǔ)模塊)
- 19S406建筑排水管道安裝-塑料管道
- MOOC 人工智能基礎(chǔ)-國防科技大學(xué) 中國大學(xué)慕課答案
- 裝配式建筑預(yù)制構(gòu)件安裝-水平構(gòu)件安裝技術(shù)
- 部編版語文五年級下冊第四單元大單元整體教學(xué)設(shè)計
- 《廂式貨運(yùn)車系列型譜》
評論
0/150
提交評論