预览加载中,请您耐心等待几秒...
1/7
2/7
3/7
4/7
5/7
6/7
7/7

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

数据的存储类型 一、变量的作用域 变量的作用域是指变量有效性的范围,与变量定义的位置密切相关,作用域是从空间这个角度来描述变量的,按照作用域的不同,变量可分为局部变量和全局变量。 1、局部变量 在函数(或代码块)内部定义的变量,也称为内部变量,局部变量只能在定义它的函数(或代码块)内使用,其他函数均不能使用,局部变量的作用域,限于说明它的代码块内:从说明的地方开始至所在的代码块结束。注意,在同一个作用域内,不允许有同名的变量。 例如:在同一个main()函数中,定义了三个数据类型和变量名均相同的局部变量i。在访问这些变量i中,他们不会混淆,它们是三个不同的局部变量。它们各有自己的作用域。 代码如下: #include<stdio.h> voidmain() { inti=10; printf("Thefirstiis%d\n",i); printf("Enterapositiveornegativenumber:"); scanf("%d",&i); printf("Inmain()i=%d\n",i); if(i>0) { inti=-10; printf("Inifiis%d\n",i); } else { inti=20; printf("Inelseiis%d\n",i); } printf("Theiinmain()stillis%d\n",i); return; } 运行结果: 2、全部变量 作用域是从定义点开始直到程序文件结束的变量,称为全局变量。全局变量在程序的整个运行过程中,都占用存储单元。在一个函数中改变了全局变量的值,其他函数可以共享。全局变量相当于起到在函数间传递数据的作用。 例如:求一元二次方程的根:ax2+bx+c=0 代码如下: #include<stdio.h> #include<math.h> floatX1,X2,p,q,d;//定义全局变量 voidgreater_than_zero(float,float);//函数声明 voidequal_to_zero(float,float); voidsmaller_than_zero(float,float); voidmain() { floata,b,c;//定义局部变量 printf("Entera,b,c:"); scanf("%f%f%f",&a,&b,&c); d=b*b-4*a*c; if(d>0) { greater_than_zero(a,b); printf("X1=%5.2f\tX2=%5.2f\n",X1,X2); } elseif(d==0) { equal_to_zero(a,b); printf("X1=X2=%5.2f\n",X1); } else { smaller_than_zero(a,b); printf("X1=%5.2f+%5.2fi\n",p,q); printf("X2=%5.2f-%5.2fi\n",p,q); } return; } voidgreater_than_zero(floatx,floaty) { X1=(-y+sqrt(d))/(2*x); X1=(-y-sqrt(d))/(2*x); return; } voidequal_to_zero(floatx,floaty) { X1=(-y)/(2*x); return; } voidsmaller_than_zero(floatx,floaty) { p=-y/(2*x); q=sqrt(-d)/(2*x); return; } 二、变量的存储类型 运行程序时,系统在内存中为数据的存储开辟了两块区域:静态数据区和动态数据区,分配在静态数据区的变量称为静态变量,分配在动态数据区的变量称为动态变量。在静态和动态两大类的存储方法中,C语言将变量的存储类型分为四种,其存储类型说明符和名称如下: 类型说明符名称 auto自动变量 static静态局部变量 extern外部变量 register寄存器变量 在变量定义语句中,存储类型符放在它所修饰的数据类型前面,一般形式为: 存储类型符数据类型符变量名表; 1、自动变量auto(动态存储类型) 在函数内定义的或在函数的语句块内定义的变量,若存储类型省略或写为auto,都是自动变量。此前的程序中使用的都属于自动变量。下面的两条变量的定义语句是等价的: inta,b;等价于: autointa,b; 注意:自动变量在初始化前,或没有赋值前,它的值是不确定的。 2、静态局部变量static(静态存储类型) 静态局部变量在静态存储区为其分配存储空间,在整个程序运行期间都不