C语言程序设计--第9-讲函数2.ppt

C语言程序设计--第9-讲函数2.ppt

ID:56527457

大小:228.50 KB

页数:51页

时间:2020-06-27

C语言程序设计--第9-讲函数2.ppt_第1页
C语言程序设计--第9-讲函数2.ppt_第2页
C语言程序设计--第9-讲函数2.ppt_第3页
C语言程序设计--第9-讲函数2.ppt_第4页
C语言程序设计--第9-讲函数2.ppt_第5页
资源描述:

《C语言程序设计--第9-讲函数2.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C语言程序设计函数(2)变量的存储类型变量两大属性:·数据类型·存储类别2、存储类别规定了变量在计算机内部的存放位置→决定变量的“寿命”(何时“生”,何时“灭”)C程序的存储类别有:■register型(寄存器型)■auto型(自动变量型)■static型(静态变量型)■extern型(外部变量型)一个完整的变量说明格式如下:存储类别数据类型变量名如autointx,y;C程序的变量存储位置变量的生存期静态存储区中的变量:与程序“共存亡”动态存储区中的变量:与函数“共存亡”寄存器中的变量:同动态存储区C程序的变量存储类别变量的生存期静态存储区中的变量与程序“

2、共存亡”动态存储区中的变量与函数“共存亡”寄存器中的变量同动态存储区■register型(寄存器型)变量值存放在运算器的寄存器中——存取速度快,一般只允许2~3个,且限于char型和int型,通常用于循环变量■auto型(自动变量型)变量值存放在主存储器的动态存储区;优点——同一内存区可被不同变量反复使用。以上两种变量均属于“动态存储型”,即调用函数时才为这些变量分配单元,函数调用结束其值自动消失。寄存器变量—register该类型变量的存储空间不是内存,而是cpu中的寄存器,因而称为寄存器变量。早期为了提高访问速度,将经常使用的变量定义在cpu中的寄存器,

3、提高系统效率。现在已经没有必要定义register了。register类型名变量名;定义格式C程序的变量存储类别变量的生存期静态存储区中的变量与程序“共存亡”动态存储区中的变量与函数“共存亡”寄存器中的变量同动态存储区■static型(静态变量型)变量值存放在主存储器的静态存储区程序执行开始至结束,始终占用该存储空间■extern型(外部变量型)同上,其值可供其他源文件使用以上两种均属于“静态存储”性质,即从变量定义处开始,在整个程序执行期间其值都存在(≠都可用!!)未说明存储类别时,函数内定义的变量默认为auto型函数外定义的变量默认为extern型。静态

4、变量静态变量是静态存储类型的变量,即在程序运行期间分配固定的存储单元,它永久存在,不随函数的退出调用而释放。在所有函数之外定义的静态变量是静态外部变量。未初始化的静态外部变量在编译时自动初始化为零值。外部变量⒈在所有函数之外定义而没有指定其存储类别的变量称为外部变量,即全局变量。其作用域符合全局变量的规定,连接在一起的各目标文件的源程序文件中的所有函数均可以访问外部变量。外部变量⒉外部变量是静态存储类型的变量,在程序运行期间分配固定的存储空间,因此其生存期是整个程序的运行期,就是说它的值不随函数的退出调用而消失。⒊外部变量可在定义时作初始化;没有初始化的外部

5、变量,由编译程序自动初始化为零值。在一个文件内声明外部变量如果外部变量不在文件的开头定义,其有效的作用域只限于定义处到文件终结处。如果在定义点之前的函数想引用该外部变量,则应该在引用前用关键字extern对该变量作“外部变量声明”。表明该变量是一个已经定义的外部变量。8.8、局部变量与全局变量1、局部变量——函数内部或复合语句内定义的变量auto(默认)所在函数调用结束时,其值自动消失局部变量register如不赋初值,取不确定值为初值static所有函数调用结束,其值仍保留如不赋初值,取初值为0(数值型)或空格(字符型)所有形参都是局部变量;局部变量只在本

6、函数或本复合语句内才能使用,在此之外不能使用(视为不存在)——main函数也不例外。六、局部变量与全局变量2、全局变量——在函数之外定义的变量extern(默认)允许本源文件中其他函数及其他源文件使用全局变量static只限本源文件中使用所有全局变量加不加static,都属于静态存储,如不赋初值,取初值为0(数值型)或空格(字符型)(注意与函数内部定义的static型局部变量的区别)2、全局变量——在函数之外定义的变量有效作用范围:从定义变量位置开始直到本源文件结束如果需要将全局变量的作用范围扩展至整个源文件——方法1全部在源文件开头处定义方法2在引用函数内

7、,用extern说明方法3在源文件开头处,用extern说明【例】求程序运行结果externintx,y;main(){printf("x=%d,y=%d",x,y);}intx=100,y=200;结果:x=100,y=200去掉第一行试试……如果要将全局变量作用范围扩展到其他源文件,只需在使用这些变量的文件中对变量用extern加以说明。main(){inta=2,i;for(i=0;i<3;i++)printf("%4d",f(a));}f(inta){intb=0;staticintc=3;b++;c++;returna+b+c;}【例】求程序运

8、行结果变量跟踪main()f函数aibcf(a)20

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。