第6,7章函数(作用域)案例.ppt

  1. 1、本文档共89页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
int max( int x , int y) { c=x-y; return c; } void main( ) { int a=3,b=5,c; c=max(a,b); } 局部变量例: x,y的作用范围 语法错误, 不能识别的 标识符C a,b,c的作用范围 主函数中定义的量也属局部变量 int a,b; void func(int x,int y) { a=x+5; b=y+3; } void main() { func(3,8); printf(“a=%d,b=%d\n”,a,b); func(4,6); printf(“a=%d,b=%d\n”,a,b); func(a,b); printf(“a=%d,b=%d\n”,a,b); } 全局变量例: a,b的作用范围 x,y的作用范围 a=8,b=11 a=9,b=9 a=14,b=12 int a,b; void func(int x,int y) { int b; a=x+5; b=y+3; } void main() { func(3,8); printf(“a=%d,b=%d\n”,a,b); func(4,6); printf(“a=%d,b=%d\n”,a,b); func(a,b); printf(“a=%d,b=%d\n”,a,b); } 全局变量例: a,b的作用范围 x,y的作用范围, 全局变量b被屏蔽, 局部变量b起作用 a=8,b=0 a=9,b=0 a=14,b=0 全局变量自动 初始化为0; 全局变量 在所有函数之外定义的变量 在程序中定义它的位置以后都有效 自动初始化为0 从程序运行起即占据内存,程序运行过程中可随时访问,程序退出时释放内存 在定义点之前或在其他文件中引用,应该进行如下声明: extern 类型名 变量名; 使函数之间的数据交换更容易,也更高效 但是并不推荐使用 因为谁都可以改写全局变量,所以很难确定是谁改写了它 结论:尽可能不使用全局变量! 全局变量与局部变量同名屏蔽原则:局部优先 局部变量的全局变量比较: 根据变量的存在的时间(生存期),变量可划分为:动态存储变量和静态存储变量。 动态存储方式:是在程序运行期间根据需要进行动态分配存储空间的方式。与之对应的变量被称为动态存储变量。通常,如果定义的变量没有其它的说明的话,系统自动将之作为一个动态存储变量,简称动态变量。当然,也可用关健字“auto”进行定义。 静态存储方式:是指程序在运行期间分配给固定存储空间的方式。与之对应的变量被称为静态存储变量,简称静态变量。必须用关健字“static”进行定义。 §13 动态存储变量与静态存储变量 §13 动态存储变量与静态存储变量 指数据在内存中存储的方式,即编译器为变量分配内存的方式,它决定变量的生存期 动态存储 根据需要临时分配存储空间,离开即释放 静态存储 在程序运行期间分配固定的存储空间不释放 程序区 静态存储区 动态存储区 形参、自动变量、函数调用的现场等 全局变量、 静态变量 自动变量 (auto ) “自动”体现在 进入语句块时自动申请内存,退出时自动释放内存 动态局部变量 标准定义格式 auto 类型名 变量名; 缺省的存储类型 不初始化时,值是不确定的 add(a,b); printf(“%d,%d”,a,b); Add(a,b); printf(“%d,%d”,a,b); } void add (int x,int y) { 3 5 3 5 void main( ) { int a=3,b=5; x=x+10; y=y+10; } add(a,b); void add (int x,int y) { 3 5 void main( ) { int a=3,b=5; x=x+10; y=y+10; } 13 15 add(a,b); 3 5 void main( ) { int a=3,b=5; printf(“%d,%d”,a,b); } add(a,b); printf(“%d,%d”

文档评论(0)

1112111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档