[实验报告二.docx

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[实验报告二

《标准C语言程序设计》上机报告实验四 变量存储类型的理解和使用以及数组初步专业: 通信工程班级: 通信1001学号: u201013024姓名: 仝信男完成日期: 5月4号1实验目的熟悉变量的各种存储类型的定义和申明理解各种存储类型变量的作用域和生存期;掌握局部变量和全局变量;掌握动态存储和静态存储;掌握一维数组和二维数组的定义、初始化和数组元素的引用;理解并掌握数组名和数组下标的含义;与数组有关的算法初步(排序)掌握C开发环境中调试、跟踪数组元素取值和元素空间地址的使用实验内容及要求上机调试跟踪复合语句中的同名变量,掌握理解复合语句中局部变量的作用域以及变量存储空间的生存期。在报告中写出你对同名变量使用的深入理解。这里是代码和解答(通过上网或打开MSDN帮助了解符号::的含义,并谈谈你的理解)#includestdio.hint x=10;void main(){int x;x=1;printf(x=%d\n,x);{int x=2;x++;printf(x=%d\n,x);}x++;printf(x=%d\n,x);{int x=8;{int x=9;printf(x=%d\n,x);::x++; //此处的::x++含义是全局变量x=10自增}printf(x=%d\n,x);printf(x=%d\n, ::x);}}调试结果如下:::x表示对外部变量的引用,即main函数前面定义的x,::在C++中是作用域或分辨符,在这里的作用是局部域中访问全局外部的同名变量。在c语言中,同名变量的引用符合就近原则。上机运行下面程序,调试跟踪static变量a和其它存储类型变量b、c的取值变化,加深理解不同存储类型变量的作用域和生存期语法概念,并给出你对静态局部和自动变量这两种局部作用域存储类型的深入理解:这里是代码和解答(如果VC6.0不能跟踪static变量的取值,你准备用什么办法?)#includestdio.hvoid func(){static int a=0;register int b=0;auto int c=0;printf(a=%d\tb=%d\tc=%d\n,a++,b++,c++);}void main(){func();func();func();}由以上结果来看,在main函数3次调用func函数时,b与c两个分别是寄存器变量和自动变量,3次结果不变说明b、c两个变量生存期只有在函数内部,一旦脱离函数后,内存中的取值就清空,而a的依次增加说明,a的值为被清空,说明static变量生存期是整个main函数,以后定义变量时,我们要多加注意,若是想保证变量的取值能一直保留,则应用static,否则用auto或者register。教材习题四的第三题,给出运行结果,单步跟踪了解调试器对函数内部auto和static两种局部变量x和y的附带初值的定义语句执行过程有何区别?进一步深入理解两种局部变量auto、static的区别。这里是代码和解答#includestdio.hint n=1;void func(){static int x=4;int y=10;x=x+2;n=n+10;y=y+n;printf(func:x=%d,y=%d,n=%d\n,x,y,n);}void main(){static int x=5;int y;y=n;printf(main:x=%d,y=%d,n=%d\n,x,y,n);func();printf(main:x=%d,y=%d,n=%d\n,x,y,n);func();}运行结果如下: 调试过程如下:在第一个输出语句中,x=5,而n=1已经定义,而又将n的值赋给了y,故输出以上结果。而在调用func时x,y值的引用符合就进原则,故x=6,n=11,y=21.在第二个输出语句中,x=5,而在main函数中y的值一直不变故y=1,而由于在main函数外定义的n为外部参照型,在运行时不执行,故n=n+1=11.在第二对func调用时,x=x+2=6+2=8,n=n+1=21,而y被初始化,故y=y+n=10=21=31.理解符号常量的作用域代码中条件编译请参考教材chapter10第三节,也可参考MSDN得到更多理解,报告中给出你对条件编译的深入理解(不仅限于本题)#includestdio.h#define DEBUG/*int f(){int k;k=NUM;return k;}*/#define NUM 20int p(){int k;k=NUM+1;return k;}#undef NUM/*int g(){return NUM -1;}*/void main(){int rtn;//rtn=f();rtn=p();//rtn=g();

文档评论(0)

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

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

1亿VIP精品文档

相关文档