C语言课程课件 第十二章 C语言中用户标识符的作用域和存储类

上传人:杨**** 文档编号:36586716 上传时间:2018-03-30 格式:PPT 页数:11 大小:143KB
返回 下载 相关 举报
C语言课程课件 第十二章 C语言中用户标识符的作用域和存储类_第1页
第1页 / 共11页
C语言课程课件 第十二章 C语言中用户标识符的作用域和存储类_第2页
第2页 / 共11页
C语言课程课件 第十二章 C语言中用户标识符的作用域和存储类_第3页
第3页 / 共11页
C语言课程课件 第十二章 C语言中用户标识符的作用域和存储类_第4页
第4页 / 共11页
C语言课程课件 第十二章 C语言中用户标识符的作用域和存储类_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《C语言课程课件 第十二章 C语言中用户标识符的作用域和存储类》由会员分享,可在线阅读,更多相关《C语言课程课件 第十二章 C语言中用户标识符的作用域和存储类(11页珍藏版)》请在金锄头文库上搜索。

1、第12章 C语言中用户标识符的作用 域和存储类 对变量的进一步讨论 12.1 局部变量、全局变量和存储分类 12.2 局部变量及其作用域和生存期 12.3 全局变量及其作用域和生存期 12.4 函数的存储分类按类型整形变量实型变量字符变量按有效范围局部变量全局变量按生存期auto变量static变量局部变量1。在一个函数内部定义的变量。#include float f1(int n) int i,j;. char f2(float x,float y) float z;. main() int a,b,c;. i,j的有效范围z的有效范围a,b,c的有效范围2。函数的形式参数。3。在某个复合语

2、句中定义的变量n的有效范围x,y的有效范围 #include main() int a,b,c;.int c;.c=a+b;. c的有效范围复合语句中的变量c和函数体中的c互不影响,在符合 语句中的变量都有自己的存储单元。全局变量#include int p=1,q=5; float f1(int a) int b;. int f2(int a) int b;. main() int m,n;. 全局变量就是指在函数体之外定义的变量。全局变量的有效范围是:从定义变量的位置开始到原文件结束。p,q的有效范围auto变量当在函数内部或复合语句内定义变量时,也可以使用auto说明符进行说明。 用au

3、to说明的变量,当该变量退出它的有效范围时,系统将自动释放该变量 所占的存储单元。例如: #include double add(double a,double b) auto double s;s=a+b;return s;main() double y,p,q;scanf(“%lf%lf”,y=add(p,q);printf(“%f”,y); 退出该函数时,局部变量a,b和s 都自动释放,在这里,我们说明 了变量s为auto型,所以也会自动 释放。再此,我们也可以把auto 省略。register变量寄存器变量与auto变量基本上相同,它们之间还是存在一些区别的:用register 说明的

4、变量建议编译程序将变量的值保留在CPU的寄存器中,而不是像一般变量 那样,占内存空间。例如: #include int power(int,register int); main() int s;s=power(5,3);printf(“%dn“,s); int power(int x,register int n) register int p;for(p=1;n;n-) p=p*x;return p; 特点 使用寄存器变量,程序运行时,访问存储器 内的值要比访问存于内存中的值快得多。 CPU中的寄存器的数目是有限的,因此只能说明 少量的寄存器变量。 register变量无地址。 尽量少用r

5、egister变量。static变量例如: #include float fac(int n) static float f=1;f=f*n;return f; main() int j;for(j=1;j int p; void f1(int n) int s=1;. main() int a,b,c;. 的有效范围p#include void f1(int n) int p=1;. int p; main() int a,b,c;. 的有效范围p局部变量p 的有效范围#include void f1(int n) extern int p=1;. int p; main() int a,b

6、,c;. 全局变量 的有效范围pextern说明符的作用不同文件中的使用f1.c原程序文件f2.c原程序文件#include int x,y; /*定义全局变量*/ void fun1(); void fun2(); void fun3(); main() fun1();fun2();fun3(); void fun1() x=111;. #include extern int x; void fun2() printf(“%dn“,x);. void fun3() x+;printf(“%dn“,x);. 在此用extern说明x 为全局变量,则意 味着在此文件中将 会引用f1.c文件中原 来变量x中的值。111 112静态全局变量不同文件中的使用f1.c原程序文件f2.c原程序文件#include static int n; void func(); main() n=5;printf(“file1:%dn“,n);func(); #include extern int n; void func() printf(“file2:%dn“,n);. 虽然在此文件中用 extern说明了变量 n,想来引用f1.c中 的全局变量n。但 是,在f1.c文件中 的的全局变量被说 明了static变量, 则意味着,该变量 只能在f1.c中被使 用。不能被其它文 件所使用。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > C/C++资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号