《7-8 变量的存储类别(一)ppt课件.ppt》由会员分享,可在线阅读,更多相关《7-8 变量的存储类别(一)ppt课件.ppt(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、自动变量自动变量21变量的存储类别变量的存储类别 外部变量外部变量3自动变量和外部变量的总结自动变量和外部变量的总结4 在C语言中,每一个变量和函数有两个属性: 数据类型和数据的存储类别 数据类型:如整型、实型等 存储类别:数据在计算机中的存储方式, 或数据的存储地点 内存储器 (memory)寄存器(CPU)存储类型存储类型说明说明存储位置存储位置auto自动变量存放在内存的栈区中extern外部变量存放内存中的静态存储区static静态变量存放内存中的静态存储区register寄存器变量存放在CPU的寄存器中 在C语言中变量的的存储类别有以下几种: 变量的存储在计算机中的不同位置占用不同的
2、存储空间,这些变量并不是永久存在,在使用完毕后会被系统回收,这就是变量的生存周期。 变量的生存周期指的是变量从定义开始到它所占有的存储空间被系统回收为止的这段时间。 变量的属性变量的属性 数据类型:变量的性质及占用存储空间的大小,如int,double等。 作用域:变量的有效区域,如局部变量与全局变量。 变量的存储类别:变量存储的位置 ,存储类别有: auto -自动型 extern -外部型 static -静态型 register-寄存器型生存周期:变量占用存储空间的时间。 定义格式:定义格式: auto 数据类型 变量名; 在函数内部定义 例如:例如: auto int x; 说明:说明
3、: 1)数据类型:int。 2)作用域:定义x所在的分程序中,是局部变量。 3)存储器类型:内存栈区。 4)生存期: 从定义x开始到分程序结束。 5)关键字auto可以省略。#include void main() auto int num1; int num2;/自动变量 int sum;/省略auto也是自动变量 printf(n 请输入两个数:); scanf(%d %d,&num1,&num2); sum=num1+num2; printf( 子函数中 sum 的值是 %d n,sum);num1数据类型:intnum1作用域:从定义num1开始到该程序结束。num1存储器类型:内存中
4、栈区。num1生存期: 从定义num1开始到该程序结束。 定义格式:定义格式:函数外部定义,定义格式和普通变量定义格式相同。 说明:说明: 1)作用域:从定义变量的位置开始到本源文件结束以及用关键字extern 说明的其他源文件,是全局变量。 2)存储器类型:内存静态存储区。 3)生存期: 整个程序运行期间。普通变量的定义和声明没有严格区分。 但外部变量的定义和外部变量的声明是不同的 外部变量的声明格式: extern 数据类型 变量名 例如:例如:extern int x; /外部变量声明 外部变量的定义和外部变量的声明不同int Max;/外部变量定义void fun(int x,int
5、y,int z) extern int Min; /外部变量声明 Max=x; Min=x; if(yMax) Max=y; if(zMax) Max=z; if(yMin) Min=y; if(zMax) Max=y; if(zMax) Max=z; if(yMin) Min=y; if(zMin) Min=z; int Min; /外部变量定义 文件2.cpp使用1.cpp中的外部变量/*2.cpp*/#include”1.cppextern int Max,Min; /外部变量声明 void main() void func(int x,int y,int z); int a,b,c;
6、scanf(%d,%d,%d,&a,&b,&c); func(a,b,c); printf(nMax=%d,Min=%d,Max,Min);需要对外部变量声明的两种情况:1)在同一个文件中,定义在后使用在前的外部变量,在使用前需要对其进行声明。2)在不同文件中(但同属一个程序)使用其它文件中定义的外部变量需要对其声明(注意不要使用static声明了的外部变量)外部变量的声明扩展了其作用域!自动变量的使用和特点与局部变量相同,外部变量的使用和特点与全局变量相同。同名的自动变量(局部变量)会屏蔽与之同名的外部变量(全局变量)外部变量(全局变量)可以使函数之间的数据交换更容易,但也会带来副作用,应尽
7、量少用。int x=3; ;/外部变量定义(全局变量)void output();void main() int x=2; /自动变量定义(局部变量) int x=1; /自动变量定义(局部变量) printf(“主函数内层括号x=%dn,x); printf(主函数外层括号x=%dn,x); output();void output() printf(output函数中x=%dn,x);主函数内层括号x=1同名的自动变量(局部变量)会屏蔽与之同名的外部变量(全局变量)主函数外层括号x=2output函数中x=3 Press any key to continueint i;void main() void prt(); for(i=0;i5;i+) prt();void prt() for(i=0;i5;i+) printf(%c,*); printf(n);*Press any key to continue外部变量(全局变量)可以使函数之间的数据交换更容易,但也会带来副作用。掌握变量存储类别的概念,掌握自动变量和外部变量的使用特点。