您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 标准C语言程序设计实验三存储类型201512
《标准C语言程序设计》上机报告实验三变量存储类型的理解和使用以及数组初步专业:通信工程班级:通信1501学号:U201513401姓名:邓平完成日期:12.141一、实验目的1.熟悉变量的各种存储类型的定义和申明2.理解各种存储类型变量的作用域和生存期;3.掌握局部变量和全局变量;4.掌握动态存储和静态存储;5.掌握一维数组和二维数组的定义、初始化和数组元素的引用;6.理解并掌握数组名和数组下标的含义;7.与数组有关的算法初步(排序)8.掌握C开发环境中调试、跟踪数组元素取值和元素空间地址的使用二、实验内容及要求一、实验内容及要求1.上机调试跟踪复合语句中的同名变量,掌握理解复合语句中局部变量的作用域以及变量存储空间的生存期。在报告中写出你对同名变量使用的深入理解。全局变量(外部变量)的说明之前再冠以static就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。从以上分析可以看出,把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。2.上机运行下面程序,调试跟踪static变量a和其它存储类型变量b、c的取值变化,加深理解不同存储类型变量的作用域和生存期语法概念,并给出你对静态局部和自动变量这两种局部作用域存储类型的深入理解:auto:在声明局部变量时,若不指定static,默认均是auto,这类变量都是动态分配存储空间的,数据存储在动态存储区中。static:在声明局部变量时,使用关键字static将局部变量指定为“静态局部变量”,这样在函数调用结束后不消失而保留原值,即占用的存储单元不释放,在下一次函数调用时,该变量已有值就是上次函数调用结束时的值。register:在声明动态局部变量或者函数形参时,可将变量声明为register,这样编译系统就会为变量分配一个寄存器而不是内存空间,通过这种方式可提升对某些局部变量频繁调用的程序的性能。(寄存器运算速度远高于内存)extern:用于扩展全局变量的作用域,比如如果函数想引用一个外部变量,但该外部变量在该函数后定义,那么这个函数需要使用extern来声明变量,这样才能使用在该函数后面定义的全局变量。此外,extern还可以在多文件的程序中声明外部变量。3.教材习题四的第三题,给出运行结果,单步跟踪了解调试器对函数内部auto和static两种局部变量x和y的附带初值的定义语句执行过程有何区别?进一步深入理解两种局部变量auto、static的区别。与auto类型(普通)局部变量相比,static局部变量有三点不同:1.存储空间分配不同auto类型分配在栈上,属于动态存储类别,占动态存储区空间,函数调用结束后自动释放,而static分配在静态存储区,在程序整个运行期间都不释放.两者之间的作用域(有效范围)相同,但生存期不同.2.static局部变量在所处模块在初次运行时进行初始化工作,且只操作一次。3.对于局部静态变量,如果不赋初值,编译期会自动赋初值0或空字符,而auto类型的初值是不确定的.特点:static局部变量的”记忆性”与生存期的”全局性”4.理解符号常量的作用域符号常量的作用域是在定义后直至解除定义代码中条件编译请参考教材chapter10第三节,也可参考MSDN得到更多理解,报告中给出你对条件编译的深入理解(不仅限于本题)5.调试课堂下面代码了解下标越界问题.#includestdio.h#includestdlib.hvoidmain(){inti;inta[10];for(i=0;i=10;i++,printf(%d\n,i))a[i]=i-1;printf(用于输入的循环执行完毕!\n);printf(i=%d\n,i);printf(开始执行输出循环...\n);for(i=0;i10;i++)printf(a[%d]=%d\n,i,a[i]);system(pause);//暂停}根据栈区的分配策略,a[10]的空间实际上是i的空间,故当i=9时,i+1后将9赋给了a[10]即i,于是i=9。循环就变成了死循环。注:报告中要给出程序测试运行时输入的数据和输出的结果,最好是切图,特别注意:测试运行时要尝试多种输入以检验程序设计的完备性(即设计的程序能否正确响应用户随意输入的数据,不会产生错误的结果,不会出现异常,不会没有任何反应等)二、上机收获1.掌握了各种变量类型的区别和使用方法,能够准确的区分他们。2.了解全局变量和局部变量的使用。3.对栈的分配策略和越界问题有了更具体的认识,能够清楚的根据栈的情况分析越界情况。
本文标题:标准C语言程序设计实验三存储类型201512
链接地址:https://www.777doc.com/doc-2292663 .html