




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第七章函數(shù)武漢理工大學(xué)計(jì)算機(jī)學(xué)院8/4/20231第七章函數(shù)武漢理工大學(xué)計(jì)算機(jī)學(xué)院7/31/20231第七章函數(shù)7.1函數(shù)的概念7.2函數(shù)的定義7.3函數(shù)的調(diào)用和函數(shù)的返回值7.4函數(shù)應(yīng)用實(shí)例7.5嵌套調(diào)用和遞歸調(diào)用7.6變量的作用域和存儲(chǔ)類別7.7內(nèi)部函數(shù)和外部函數(shù)(*)7.8編譯預(yù)處理8/4/20232第七章函數(shù)7.1函數(shù)的概念7/31/202327.1
函
數(shù)
的
概
念#include"stdio.h"voidstars(intn);voidprint_message();main(){stars(20);print_message();stars(20);}voidstars(intn){inti;for(i=1;i<=n;i++)putchar('*');putchar('\n');}voidprint_message(){printf("Howdoyoudo!\n");}函數(shù)stars()、print_message()的聲明/*main函數(shù)的定義*/stars()、print_message()函數(shù)調(diào)用定義stars()函數(shù)定義print_message()函數(shù)程序運(yùn)行后輸出結(jié)果為:8/4/202337.1
函
數(shù)
的
概
念#include"stdio.C程序結(jié)構(gòu)8/4/20234C程序結(jié)構(gòu)7/31/20234說明:C是函數(shù)式語(yǔ)言一個(gè)C程序有且只能有一個(gè)名為main的主函數(shù)。所有的函數(shù)都是互相獨(dú)立的,除main函數(shù)不能調(diào)用外,其它函數(shù)可以互相調(diào)用。函數(shù)庫(kù)函數(shù)(標(biāo)準(zhǔn)函數(shù))自定義函數(shù)有參函數(shù)無(wú)參函數(shù)或8/4/20235說明:C是函數(shù)式語(yǔ)言有參函數(shù)或7/31/202357.2函數(shù)的定義[類型說明符]函數(shù)名([形參說明表]){ [說明部分][語(yǔ)句部分]}說明函數(shù)返回值的數(shù)據(jù)類型;若缺省,則為int類型;若函數(shù)無(wú)值,則定義為void類型。由用戶自己命名,合法的標(biāo)識(shí)符說明參數(shù)的個(gè)數(shù)和類型說明函數(shù)中用到的除形參以外的其它變量等為了完成函數(shù)特定的功能而設(shè)計(jì)的一個(gè)或多個(gè)語(yǔ)句
空函數(shù):Function(){}8/4/202367.2函數(shù)的定義[類型說明符]函數(shù)名([形參說明表函數(shù)定義實(shí)例打印一行n個(gè)‘*’
voidstars(intn){inti;for(i=1;i<=n;i++)putchar('*');putchar('\n');}求整數(shù)x的n次冪(n>0)longpower(intx,intn){inti;longmul=1;for(i=1;i<=n;i++)mul=mul*x;return(mul);}傳統(tǒng)的定義風(fēng)格8/4/20237函數(shù)定義實(shí)例打印一行n個(gè)‘*’求整數(shù)x的n次冪(n>0傳統(tǒng)的函數(shù)定義形式longpower(x,n)intx,n;{inti;longmul=1;for(i=1;i<=n;i++)mul=mul*x;return(mul);}8/4/20238傳統(tǒng)的函數(shù)定義形式longpower(x,n)7/317.3函數(shù)的調(diào)用和函數(shù)的返回值7.3.1函數(shù)的參數(shù)7.3.2函數(shù)的返回值7.3.3函數(shù)的聲明7.3.4函數(shù)的調(diào)用8/4/202397.3函數(shù)的調(diào)用和函數(shù)的返回值7.3.1函數(shù)的參數(shù)77.3.1函數(shù)的參數(shù)形式參數(shù):函數(shù)定義時(shí)所使用的參數(shù)稱為形式參數(shù)。形參可以是:變量或數(shù)組名。實(shí)際參數(shù):函數(shù)調(diào)用時(shí)所使用的參數(shù)稱為實(shí)際參數(shù)。實(shí)參可以是:具有確切值的常量、變量、表達(dá)式或數(shù)組名。8/4/2023107.3.1函數(shù)的參數(shù)形式參數(shù):7/31/202310intmax(intx,inty);voidmain(){inta,b,c;scanf("%d%d",&a,&b);c=max(a,b);printf("Max=%d.\n",c);}intmax(intx,inty){intz;z=x>y?x:y;return(z);}形參只能是變量或數(shù)組名intmax(intx,inty)c=max(a,b)實(shí)參可以是常量、變量、表達(dá)式或數(shù)組名,但要求它們有確定的值如:c=max(10,(a+b)/2);實(shí)參與形參之間:個(gè)數(shù)一致,類型一致或賦值兼容,順序一致。形參:變量常量變量實(shí)參表達(dá)式值8/4/202311intmax(intx,inty);形參只能是變量或7.3.2函數(shù)的返回值返回語(yǔ)句(return語(yǔ)句):格式:return(表達(dá)式);或return表達(dá)式;或return;功能:將流程及表達(dá)式的值從被調(diào)用函數(shù)返回到函數(shù)的調(diào)用處。說明:
intmax(intx,inty){intz;z=(x>y)?x:y;return(z);}若return后面帶表達(dá)式,首先計(jì)算表達(dá)式的值,表達(dá)式的值就是所求的函數(shù)值。returnz;return((x>y)?x:y);8/4/2023127.3.2函數(shù)的返回值返回語(yǔ)句(return語(yǔ)句):in說明(續(xù))一個(gè)函數(shù)體內(nèi)可以有多個(gè)或沒有return語(yǔ)句;intmax(intx,inty){intz;if(x>y)return(x);elsereturn(y);}voidoutput(intm){printf(”%d”,m);return;}
若return后面沒有表達(dá)式,或沒有return語(yǔ)句,則可能會(huì)返回不定值。output(intm){printf(”%d”,m);return;}/*默認(rèn)為int類型函數(shù)*/void:空類型8/4/202313說明(續(xù))一個(gè)函數(shù)體內(nèi)可以有多個(gè)或沒有return語(yǔ)句;in7.3.3函數(shù)的聲明#include"stdio.h"voidstars(intn);voidprint_message();main(){stars(20);print_message();stars(20);}voidstars(intn){inti;for(i=1;i<=n;i++)putchar('*');putchar('\n');}voidprint_message(){printf("Howdoyoudo!\n");}8/4/2023147.3.3函數(shù)的聲明#include"stdio.h"函數(shù)聲明的一般形式:函數(shù)類型函數(shù)名(類型名形參1,類型名形參2,……)包含參數(shù)和返回值類型的函數(shù)聲明稱為函數(shù)原型。函數(shù)類型函數(shù)名(類型名,類型名,……)若有函數(shù):
floatfun(doublea,intb,floatc){……}則可有函數(shù)聲明:⒈floatfun(doublea,intb,floatc);⒉floatfun(doublex,inty,floatz);⒊floatfun(double,int,float);說明:8/4/202315函數(shù)聲明的一般形式:說明:7/31/202315說明(續(xù)):如果函數(shù)的值是int或char型,可以不必進(jìn)行聲明,系統(tǒng)自動(dòng)按int型聲明。如果被調(diào)用函數(shù)出現(xiàn)在主調(diào)函數(shù)之前,可以不必進(jìn)行聲明。#include<stdio.h>main(){inta,b,c;scanf("%d%d",&a,&b);c=max(a,b);printf("Max=%d\n",c);}intmax(intx,inty){intz;z=x>y?x:y;return(z);}8/4/202316說明(續(xù)):如果函數(shù)的值是int或char型,可以不說明(續(xù)):如果已在所有函數(shù)定義之前,在函數(shù)的外部已作了函數(shù)聲明,則在各個(gè)主調(diào)函數(shù)中不必對(duì)所調(diào)用的函數(shù)再做聲明。#include<stdio.h>doublemysqrt(floatx);main(){floata,c;scanf(”%f”,&a);c=mysqrt(a);printf(”sqrt(%f)=%f\n”,a,c);}doublemysqrt(floatx){doubley;y=sqrt(x);return(y);}8/4/202317說明(續(xù)):如果已在所有函數(shù)定義之前,在函數(shù)的外部已作了函數(shù)7.3.4函數(shù)的調(diào)用調(diào)用的一般形式:函數(shù)名(實(shí)參1,實(shí)參2,……)說明:若調(diào)用無(wú)參函數(shù),則無(wú)實(shí)參表列,但括弧不能省略;如果實(shí)參表列包含多個(gè)實(shí)參,則各參數(shù)間用逗號(hào)隔開;實(shí)參與形參的個(gè)數(shù)應(yīng)相等,類型應(yīng)一致或賦值相容;實(shí)參與形參按順序一一對(duì)應(yīng)傳遞數(shù)據(jù);8/4/2023187.3.4函數(shù)的調(diào)用調(diào)用的一般形式:7/31/20231調(diào)用方式函數(shù)語(yǔ)句:由函數(shù)調(diào)用加上分號(hào)構(gòu)成,在主調(diào)函數(shù)中可作為一個(gè)獨(dú)立的語(yǔ)句。如:
stars(20);或printf(”Cprogram”);函數(shù)表達(dá)式:函數(shù)調(diào)用作為一個(gè)運(yùn)算對(duì)象出現(xiàn)在表達(dá)式中,此時(shí)要求函數(shù)帶回一個(gè)確定的值以參加表達(dá)式的運(yùn)算。如:c=mysqrt(a);函數(shù)參數(shù):函數(shù)調(diào)用作為另一個(gè)函數(shù)的實(shí)參,其值作為一個(gè)實(shí)際參數(shù)傳給被調(diào)函數(shù)的形參進(jìn)行處理;此時(shí)也要求函數(shù)帶回一個(gè)確定值。如:m=max(a,max(b,c));printf("%d",max(a,b));8/4/202319調(diào)用方式7/31/202319調(diào)用過程floatadd();main(){floata,b,c;scanf(”%f,%f”,&a,&b);c=add(a,b);printf(”sumis%f”,c);}floatadd(floata,floatb){return(a+b);}調(diào)用,流程從主調(diào)函數(shù)轉(zhuǎn)移到被調(diào)用函數(shù),且實(shí)參將值傳給對(duì)應(yīng)的形參;執(zhí)行被調(diào)用函數(shù);流程從被調(diào)用函數(shù)返回到主調(diào)函數(shù),并返回函數(shù)值。abc615a6b15218/4/202320調(diào)用過程調(diào)用,流程從主調(diào)函數(shù)轉(zhuǎn)移到被調(diào)用函數(shù),且實(shí)參將值傳給調(diào)用過程floatadd();main(){floata,b,c;scanf(”%f,%f”,&a,&b);c=add(10,b+2);printf(”sumis%f”,c);}floatadd(floata,floatb){floatc;c=a+b;a++;b++;return(a+b);}abc615a10b1717c2711182929形參:變量實(shí)參:常量變量表達(dá)式值108/4/202321調(diào)用過程abc615a10b1717c2711182929形7.4函數(shù)應(yīng)用實(shí)例例7.1求累加和sum=1+2!+…+10!分析:可以編寫一個(gè)求階乘的函數(shù)fac(n)計(jì)算n!實(shí)現(xiàn):longfac(intn);main(){inti;longsum=0;for(i=1;i<=10;i++)sum+=fac(i);printf(”\nsum=%ld”,sum);}longfac(intn){inti;longx=1L;for(i=1;i<=n;i++)x*=i;return(x);}8/4/2023227.4函數(shù)應(yīng)用實(shí)例例7.1求累加和sum=1+例7.2由鍵盤輸入x、y及z的值,計(jì)算函數(shù)
sin(x)sin(y)sin(z)
func(x,y,z)=————+————+————
sin(x-y)sin(x-z)sin(y-z)sin(y-x)sin(z-x)sin(z-y)分析:可以定義一個(gè)函數(shù)part(x,y,z)求每加項(xiàng)的值另外定義一個(gè)度與弧度之間的轉(zhuǎn)換函數(shù)change(x)主函數(shù)中以度為單位輸入x、y及z的值,并轉(zhuǎn)換為弧度;多次調(diào)用part()函數(shù)求出func的值輸出func的值8/4/202323例7.2由鍵盤輸入x、y及z的值,計(jì)算函數(shù)
sin(x)sin(y)sin(z)
func(x,y,z)=————+————+————
sin(x-y)sin(x-z)sin(y-z)sin(y-x)sin(z-x)sin(z-y)#include<math.h>doublechange(floatx);doublepart(floatx,floaty,floatz);main(){floatx,y,z,sum;scanf(”%f%f%f”,&x,&y,&z);x=change(x);y=change(y);z=change(z);sum=part(x,y,z)+part(y,z,x)+part(z,x,y);printf(”\nfunc=%f”,sum);}8/4/202324sin(x)
sin(x)sin(y)sin(z)
func(x,y,z)=————+————+————
sin(x-y)sin(x-z)sin(y-z)sin(y-x)sin(z-x)sin(z-y)doublechange(floatx){return(x*3.14159/180);}doublepart(floatx,floaty,floatz);{floattmp;tmp=sin(x)/sin(x-y)/sin(x-z);return(tmp);}8/4/202325sin(x)7.5函數(shù)的嵌套調(diào)用和遞歸調(diào)用7.5.1函數(shù)的嵌套調(diào)用7.5.2函數(shù)的遞歸調(diào)用8/4/2023267.5函數(shù)的嵌套調(diào)用和遞歸調(diào)用7.5.1函數(shù)的嵌套7.5.1函數(shù)的嵌套調(diào)用C語(yǔ)言的函數(shù)定義都是互相平行的、獨(dú)立的,即不允許嵌套定義函數(shù);但是,可以嵌套調(diào)用函數(shù),即程序在調(diào)用一個(gè)函數(shù)的過程中,該被調(diào)函數(shù)又可以調(diào)用其它函數(shù)。如:main函數(shù)調(diào)用a函數(shù)a函數(shù)調(diào)用b函數(shù)b函數(shù)結(jié)束main函數(shù)調(diào)用a函數(shù)a函數(shù)調(diào)用b函數(shù)b函數(shù)結(jié)束main函數(shù)調(diào)用a函數(shù)a函數(shù)調(diào)用b函數(shù)結(jié)束8/4/2023277.5.1函數(shù)的嵌套調(diào)用C語(yǔ)言的函數(shù)定義都是互相平行的、
nm!
例7.1求組合數(shù)C=————
mn!*(m-n)!longcmn(intm,intn);longfac(intn);main(){intm,n;longc;printf(”\n輸入兩整數(shù):”);scanf(”%d%d”,&m,&n);c=cmn(m,n);printf(”\n組合數(shù)值=%ld”,c);}longcmn(intm,intn){longx;x=fac(m)/fac(n)/fac(m-n);return(x);}
longfac(intn){longx=1L;while(n>=1)x*=nreturn(x);}8/4/202328n調(diào)
用
過
程main函數(shù)調(diào)用cmn函數(shù)cmn(m,n)調(diào)用fac函數(shù)fac(m)調(diào)用fac函數(shù)fac(n)調(diào)用fac函數(shù)fac(m-n)結(jié)束main函數(shù)調(diào)用cmn函數(shù)cmn(m,n)調(diào)用fac函數(shù)fac(m)調(diào)用fac函數(shù)fac(n)調(diào)用fac函數(shù)fac(m-n)結(jié)束8/4/202329調(diào)
用
過
程main函數(shù)調(diào)用cmn函數(shù)cmn(m,n)調(diào)用7.5.2函數(shù)的遞歸調(diào)用概念:定義一個(gè)函數(shù)時(shí),在函數(shù)體內(nèi)直接或間接地調(diào)用了自身,則稱為函數(shù)的遞歸調(diào)用。intf1(intx){inty,z;……z=f2(y);……return(z);}intf2(intt){intb,c;……c=f1(c);……return(3+c);}intf(intx){inty,z;……z=f(y);……return(z*z);}直接遞歸間接遞歸8/4/2023307.5.2函數(shù)的遞歸調(diào)用概念:定義一個(gè)函數(shù)時(shí),在函數(shù)體遞歸的兩個(gè)方面:遞歸的一般形式
遞歸的結(jié)束條件如:n!遞推形式:n!=1×2×…×n遞歸形式:longf(intn){longy;if(n==0)y=1;elsey=f(n-1)*n;return(y);}main(){intn;printf("\ninputn(n>0):");scanf("%d",&n);if(n<0)printf("Dataerror!\n");elseprintf("%d!=%ld\n",n,f(n));}運(yùn)行過程演示8/4/202331遞歸的兩個(gè)方面:遞歸的一般形式
main(){……n=5;print(f(5));}longf(5){longy;……y=5*f(4);
}longf(4){longy;……y=4*f(3);
}longf(3){longy;……y=3*f(2);
}longf(3){longy;……y=3*f(2);
}longf(2){longy;……y=2*f(1);
}longf(1){longy;……y=1*f(0);}return(1);return(2);return(6);return(6);return(24);return(120);longf(0){longy;……y=1;}return(1);調(diào)用過程8/4/202332main()longf(5)longf(4)long7.6變量的作用域和存儲(chǔ)類別7.6.1變量的作用域7.6.2變量的存儲(chǔ)類別7.6.3小結(jié)8/4/2023337.6變量的作用域和存儲(chǔ)類別7.6.1變量的作用域77.6.1變量的作用域變量的作用域:是指在程序中不同位置所定義的變量,其變量起作用的區(qū)域。根據(jù)變量起作用的范圍,變量可分為:局部變量:在函數(shù)內(nèi)部或復(fù)合語(yǔ)句中定義的變量,也稱為內(nèi)部變量。其作用域僅在所定義的函數(shù)或復(fù)合語(yǔ)句中。全局變量:在所有函數(shù)外部定義的變量,也稱為外部變量。其作用域從定義位置開始到其所在的源文件結(jié)束。8/4/2023347.6.1變量的作用域變量的作用域:是指在程序中不同位置1.局部變量main(){intj,x,c;……{intc;
c=j%2;……}……}intf1(inta){intv1,x;……}intf2(){intv2,x,y;……}jxcca,v1,xv2,x,y8/4/2023351.局部變量main()intf1(inta)jc例voidf(){inta=1;printf("\n1.a=%d",a);}main(){inta=10,i;f();for(i=1;i<=2;i++){inta=50;a++;printf("\n2.%d:a=%d",i,a);}printf("\n3.a=%d",a);}程序運(yùn)行結(jié)果為:11233321.a=12.1:a=512.2:a=513.a=108/4/202336例voidf()程序運(yùn)行結(jié)果為:11233321.a=程序運(yùn)行結(jié)果為:1.a=12.1:a=512.2:a=513.a=10a210511.a=12.1:a=512.2:a=513.a=10a210a350a3508/4/202337程序運(yùn)行結(jié)果為:a210511.a=1a210a350a352.
全
局
變
量#include<stdio.h>intp=1,q=5;main(){intm,n;……}floatf1(inta){intb,c;……}charc1,c2;charf2(intx,inty){inti,j;.……}p,q的作用范圍c1,c2的作用范圍8/4/2023382.
全
局
變
量#include<stdio.h>p說明全局變量增加了函數(shù)間的數(shù)據(jù)聯(lián)系盡量少使用全局變量(除非在必要時(shí))intk;voidshow(){printf("\n2.k=%d",k);k=9;}main(){k=2;show();printf("\n1.k=%d",k);}運(yùn)行結(jié)果:2.k=21.k=98/4/202339說明全局變量增加了函數(shù)間的數(shù)據(jù)聯(lián)系intk;運(yùn)行結(jié)果:說明(續(xù))若全局變量與局部變量同名,則在局部變量的作用范圍內(nèi),全局變量不起作用inta=3,b=5;intmax(inta,intb){intc;c=a>b?a:b;return(c);}main(){inta=10;printf("%d",max(a,b));}形參a、b的作用域全局變量a、b不起作用局部變量a的作用域全局變量a不起作用運(yùn)行結(jié)果為:108/4/202340說明(續(xù))若全局變量與局部變量同名,則在局部變量的作用范圍內(nèi)說明(續(xù))可以用extern作外部變量聲明,擴(kuò)大全局變量的作用域voidf1(){externintc;……}externintb;
voidf2(){……}main(){externinta;
……}inta=8,b=-2,c=15;abc注意:externintb=1;
×ac8/4/202341說明(續(xù))可以用extern作外部變量聲明,擴(kuò)大全局變量的作7.6.2變量的存儲(chǔ)類別存儲(chǔ)空間的劃分程序區(qū)靜態(tài)數(shù)據(jù)區(qū)動(dòng)態(tài)數(shù)據(jù)區(qū)程序區(qū):用于存放程序編譯后形成的可執(zhí)行代碼(執(zhí)行時(shí)裝入)靜態(tài)存儲(chǔ)區(qū):用于存放程序中的靜態(tài)數(shù)據(jù),如全局變量等動(dòng)態(tài)存儲(chǔ)區(qū):用于存放程序中的動(dòng)態(tài)數(shù)據(jù),如函數(shù)形參、局部變量、函數(shù)調(diào)用時(shí)的現(xiàn)場(chǎng)保護(hù)和返回地址等靜態(tài)數(shù)據(jù):說明時(shí)在靜態(tài)存儲(chǔ)區(qū)中分配存儲(chǔ)單元并在程序執(zhí)行過程中始終占用該單元,直到程序結(jié)束才釋放;動(dòng)態(tài)數(shù)據(jù):在函數(shù)開始執(zhí)行時(shí)分配動(dòng)態(tài)存儲(chǔ)空間,函數(shù)結(jié)束時(shí)釋放這些空間。C的存儲(chǔ)類別有四種:auto、static、register和extern。8/4/2023427.6.2變量的存儲(chǔ)類別存儲(chǔ)空間的劃分程序區(qū)程序區(qū):用于局部變量的存儲(chǔ)屬性自動(dòng)的(auto)、靜態(tài)的(static)、寄存器的(register)voidf(intc);main(){registerinti;/*i:局部寄存器變量*/for(i=1;i<=3;i++)f(i);}voidf(intc){autointa=0;/*a:局部自動(dòng)變量,inta=0;*/staticintb;/*b:局部靜態(tài)變量,staticintb=0;*/a++;b++;printf("%d:a=%d,b=%d\n",c,a,b);}存放在動(dòng)態(tài)存儲(chǔ)區(qū)存放在靜態(tài)存儲(chǔ)區(qū)存放在寄存器中,無(wú)地址8/4/202343局部變量的存儲(chǔ)屬性自動(dòng)的(auto)、靜態(tài)的(static)寄存器變量說明為了減少?gòu)膬?nèi)存中存取變量值的時(shí)間,C語(yǔ)言允許將局部變量的值放在寄存器中;用關(guān)鍵字register聲明。
intfac(intn){registerinti,f=1;for(i=1;i<=n;i++)f=f*i;return(f);}不能定義太多的寄存器變量,因?yàn)榧拇嫫鲾?shù)量有限,太多無(wú)效(將自動(dòng)按自動(dòng)變量處理)寄存器無(wú)地址,因此:&i×&f×返回8/4/202344寄存器變量說明為了減少?gòu)膬?nèi)存中存取變量值的時(shí)間,C語(yǔ)言允許將自動(dòng)變量和靜態(tài)局部變量區(qū)別voidf(intn){inta=0;
staticintb=0;a++;b++;printf("\n%d:a=%d,b=%d",n,a,b);}main(){registerinti;for(i=1;i<=3;i++)f(i);}i1n1a0b0111:a=1,b=1
22233:a=1,b=32:a=1,b=20130134程序結(jié)束返回8/4/202345自動(dòng)變量和靜態(tài)局部變量區(qū)別voidf(intn)i1局部靜態(tài)變量說明函數(shù)編譯時(shí)在靜態(tài)存儲(chǔ)區(qū)分配存儲(chǔ)單元,函數(shù)調(diào)用結(jié)束后不釋放存儲(chǔ)單元,即在整個(gè)程序的運(yùn)行中不釋放存儲(chǔ)單元。用static聲明該變量為“局部靜態(tài)變量”若對(duì)變量賦初值,對(duì)于靜態(tài)變量,只執(zhí)行一次,再次調(diào)用函數(shù)時(shí)不再賦初值而保留上次函數(shù)調(diào)用結(jié)束時(shí)的值;而對(duì)于自動(dòng)變量,每次調(diào)用都要重新分配內(nèi)存單元并賦初值若不對(duì)變量賦初值,對(duì)于靜態(tài)變量系統(tǒng)自動(dòng)賦缺省值;而對(duì)于自動(dòng)變量,只分配存儲(chǔ)單元,其值不確定雖然靜態(tài)局部變量在函數(shù)調(diào)用結(jié)束后仍占存儲(chǔ)單元,但由于是局部變量,其它函數(shù)不能引用它8/4/202346局部靜態(tài)變量說明函數(shù)編譯時(shí)在靜態(tài)存儲(chǔ)區(qū)分配存儲(chǔ)單元,函數(shù)調(diào)全局變量的存儲(chǔ)方式全局變量是在函數(shù)外部定義的,存放在靜態(tài)存儲(chǔ)區(qū),在程序的整個(gè)運(yùn)行過程中占用存儲(chǔ)單元,生存期為整個(gè)程序的運(yùn)行期間8/4/202347全局變量的存儲(chǔ)方式全局變量是在函數(shù)外部定義的,存放在靜態(tài)存儲(chǔ)intc;voidf(intn){inta=0;a++;c++;printf("\n%d:a=%d,c=%d",n,a,c);}main(){inti;for(i=1;i<=3;i++){f(i);c++;}printf("\nc=%d",c);}c0i1n1a0111:a=1,c=1
2220132:a=1,c=34330153:a=1,c=56c=64程序結(jié)束8/4/202348intc;c0i1n1a0111:a=1,c=12227.6.3存儲(chǔ)類別小結(jié)1、數(shù)據(jù)的兩種屬性:數(shù)據(jù)類型存儲(chǔ)類別autofloata;static
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年電子地圖項(xiàng)目可行性研究報(bào)告
- 電動(dòng)滑板車共享企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力項(xiàng)目商業(yè)計(jì)劃書
- 農(nóng)家住宿線上推廣行業(yè)跨境出海項(xiàng)目商業(yè)計(jì)劃書
- 耐候性三元乙丙橡膠管道行業(yè)跨境出海項(xiàng)目商業(yè)計(jì)劃書
- 藝術(shù)培訓(xùn)開課計(jì)劃書文案
- 紅松母樹林?jǐn)U建項(xiàng)目可行性研究報(bào)告
- 旅游業(yè)發(fā)展的市場(chǎng)營(yíng)銷措施
- 二年級(jí)學(xué)生數(shù)學(xué)復(fù)習(xí)計(jì)劃:提高學(xué)習(xí)效率
- 伙伴成長(zhǎng)計(jì)劃書
- 小學(xué)一年級(jí)數(shù)學(xué)文化活動(dòng)計(jì)劃
- 中文版自殺可能量表
- openstack云計(jì)算平臺(tái)搭建課件
- 勞務(wù)實(shí)名制及農(nóng)民工工資支付管理考核試題及答案
- 裝飾藝術(shù)運(yùn)動(dòng)課件
- 【審計(jì)工作底稿模板】FH應(yīng)付利息
- 胃腸減壓技術(shù)操作流程.
- 工貿(mào)企業(yè)安全管理臺(tái)賬資料
- 三方協(xié)議書(消防)
- 工序能耗計(jì)算方法及等級(jí)指標(biāo)
- 預(yù)激綜合征臨床心電圖的當(dāng)前觀點(diǎn)
- 閥門檢修作業(yè)指導(dǎo)書講解
評(píng)論
0/150
提交評(píng)論