资源描述:
《变量的作用域与生存期--深入理解变量的使用new.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、变量的作用域与生存期——深入理解变量的使用一、问题的提出与课题引入1、变量能被不同的函数使用或变量不能被不同的函数使用2、变量的值能被不同的函数累计使用变量的值不能被不同的函数累计使用变量的作用有效范围问题:变量作用域变量值在内存或寄存器中存在时间问题:变量生存期二、变量的定义、申明与引用#includeintmain(){intmax();externintA,B,C;printf("请输入三个整数:")scanf("%d,%d,%d",&A,&B,&C);printf("最大数为:%d",
2、max());return0;}intA,B,C;intmax(){intm;m=A>B?A:B;if(C>m)m=C;return(m);}//变量的引用//变量的申明//变量的定义ABC建立存储空间二、变量的定义、申明与引用#includeintA,B,C;intmain(){intmax();printf("请输入三个整数:")scanf("%d,%d,%d",&A,&B,&C);printf("最大数为:%d",max());return0;}intmax(){intm;m=A>B?
3、A:B;if(C>m)m=C;return(m);}//变量的引用建立存储空间//变量的定义、申明ABC三、变量的基本类型1、局部变量——内部变量在函数内部或函数中复合语句内部定义的变量称为局部变量。voidsub(inta){intb;{intc;}for(inti=0;i<10;i++)……}//形参属于局部变量//函数内部定义的变量属于局部变量//复合语句内部定义的变量属于局部变量//循环变量属于局部变量三、变量的基本类型2、全局变量——外部变量 全程变量在函数外部定义的变量称为全局变量。file1.cext
4、ernA;intmain(){externB;B=1;A=2;}intB;file2.cintA;voidfun(intn){}//函数外可以是函数前,也可以是函数后,还可以在文件外四、局部变量作用域局部变量的作用域是从该变量被申明(定义)位置开始,一直到该函数或复合句结束。voidsub(inta){}for(inti=0;i<10;i++)voidsub(){inta;……}inti;for(i=0;i<10;i++)voidsub(inta){i=i+1;intb;{intc;a=a+1;b=b+1;c=
5、c+1;}for(inti=0;i<10;i++){a=a+1;b=b+1;c=c+1;}i=i+1;}√√√√√√××五、局部变量的生存期动态存储的局部变量(自动变量、寄存器变量)的值存储在内存用户区的动态存储区,其生存期为本函数一次调用的作用域。voidfun1(){intA=0;A=A+1;}intmain(){fun1();fun1();return0;}voidfun1(){intA=0;A=A+1;}voidfun1(){intA=0;A=A+1;}程序区静态存储区动态存储区①程序区静态存储区动态存储区
6、A=0①②程序区静态存储区动态存储区A=1②③程序区静态存储区动态存储区③④程序区静态存储区动态存储区A=0④⑤程序区静态存储区动态存储区A=1⑤⑥程序区静态存储区动态存储区⑥六、全局变量作用域全局变量的作用域是从该变量被申明(定义)位置开始,一直到本源文件结束。外部变量增加了函数间数据联系的渠道externintA;intmain(){externintB;return0;}voidfun1(){A=A+1;B=B+1;C=C+1;}intA;intB;intC;Voidfun2(){A=A+1;B=B+1;C=
7、C+1;}×√×√√√七、全局变量生存期全局变量的值存储在内存用户区的静态存储区,其生存期为整个程序的运行期。intA=0;voidfun1(){A=A+1;}intmain(){fun1();fun1();return0;}voidfun1(){A=A+1;}voidfun1(){A=A+1;}程序区静态存储区A=0动态存储区①①程序区静态存储区A=0动态存储区②②程序区静态存储区A=1动态存储区③③程序区静态存储区A=1动态存储区④④程序区静态存储区A=0动态存储区⑤⑤程序区静态存储区A=2动态存储区⑥⑥⑦程序
8、区静态存储区A=2动态存储区⑦⑧程序区静态存储区动态存储区⑧八、变量的可见性在变量的作用域内可以引用此变量,称为变量的可见性。同名变量的作用域依据就近原则界定。intA;voidfun1(){A=A+1;intA;A=A+1;}intmain(){A=A+1;return0;}九、变量的作用域与生存期的关系1、作用域与生存期一致情况一般地,局部变量存储在动态