- 1、本文档共60页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第16章 常见错误和程序调试pt
第16章 常见错误和程序调试 16.1 常见错误分析 16.2 程序调试 应改为 max(x,y) int x,y; {int z; z=x>y?x:y; return(z); } (22) 所调用的函数在调用语句之后才定义,而又在调用前未加说明。 main( ) {float x,y,z; x=3.5;y=-7.6; z=max(x,y); printf(%f\n,z); } float max(float x,float y) {return(z=x>y?x:y); } 这个程序乍看起来没有什么问题,但在编译时有出错信息。原因是max函数是实型的,而且在main函数之后才定义,也就是max函数的定义位置在main函数中的调用max函数之后。改错的方法可以用以下二者之一: ① 在main函数中增加一个对max函数的声明,即函数的原型: main( ) {float max(float,float);/*声明将要用到的max函数为实型*/ float x,y,z; x=3.5;y=-7.6; z=max(x,y); printf(%f\n,z); } ② 将max函数的定义位置调到main函数之前。即: float max(float x,float y) {return(z=x>y?x:y);} main() {float x,y,z; x=3.5;y=-7.6; z=max(x,y); printf(%f\n,z); } 这样,编译时不会出错,程序运行结果是正确的。 (23) 误认为形参值的改变会影响实参的值。 main( ) {inta,b; a=3;b=4; swap(a,b); printf(%d,%d\n,a,b); } swap(int x,int y) {int t; t=x;x=y;y=t; } 原意是通过调用swap函数使a和b的值对换,然后在main函数中输出已对换了值的a和b。但是这样的程序是达不到目的的,因为x和y的值的变化是不传送回实参a和b的,main函数中的a和b的值并未改变。 如果想从函数得到一个以上的变化了的值,应该用指针变量。用指针变量作函数参数,使指针变量所指向的变量的值发生变化。此时变量的值改变了,主调函数中可以利用这些已改变的值。如: main( ) {int a,b,*p1,*p2; a=3;b=4; p1=a;p2=b; swap(p1,p2); printf(%d,%d\n,a,b); /a和b的值已对换/ } swap(int *pt1, int *pt2) {int t; t=*pt1;*pt1=*pt2;*pt2=t; } (24) 函数的实参和形参类型不一致。 main( ) {int a=3,b=4; c=fun(a,b); … } fun(float x,float y) { … } 实参a、b为整型,形参x、y为实型。a和b的值传递给x和y时,x和y的值并非3和4。C要求实参与形参的类型一致。如果在main函数中对fun作原型 声明: fun (float, float); 程序可以正常运行,此时,按不同类型间的赋值的规则处理,在虚实结合后x=3.0, y=4.0。也可以将fun函数的位置调到main函数之前,也可获正确结果。 (25) 不同类型的指针混用。 main( ) {int i=3,*p1; float a=1.5,*p2; p1=i; p2=a; p2=p1; printf(%d,%d\n,*p1,*p2); } 企图使p2也指向i,但p2是指向实型变量的指针,不能指向整型变量。指向不同类型的指针间的赋值必须进行强制类型转换。如: p2=(float*)p1; 作用是先将p1的值转换成指向实型的指针,然后再赋给p2。 这种情况在C程序中是常见的。例如,用malloc函数开辟内存单元,函数返回的是指向被分配内存空间的void *类型的指针。而人们希望开辟的是 存放一个结构体变量值的存储单元,要求得到指向该结构体变量的指针,可以进行如下的类型转换。 struct student {int num; char name[20]; float
您可能关注的文档
- 第13课清朝对边地区的治理.ppt
- 第13课两汉经济的发展00001.ppt
- 第13课祖国统大业.ppt
- 第13两极格局的形成.ppt
- 第13课制重复图形.ppt
- 第13失业与通货膨胀理论.ppt
- 第13托辐射.ppt
- 第13两汉经济的发展.ppt
- 第13时功功率机械能及其转化.ppt
- 第13图形的尺寸标注.ppt
- DeepSeek 7大热点+全套提示词零基础入门(100页).pptx
- DeepSeek给我们带来的创业机会(76页).pptx
- 北京大学-DeepSeek私有化部署和一体机(121页).pptx
- 199个经典逻辑思维工具框架模型(300页 PPT).pptx
- 数字化智慧园区建设实施.pptx
- 浙江大学:从DeepSeek探讨大语言模型在建筑及能源行业的应用趋势和技术方法【78页PPT】.pptx
- DeepSeek完全实用手册V1.0 (115页).pptx
- 大型集团客户经营策略及集团管控解决方案(110页).pptx
- 从电商平台角度看IT互联网行业的商业计划书-创业路演-创始人或高管的演讲.pptx
- 卫生服务行业政策法规及标准汇报-年终总结-卫生服务政策汇报.pptx
最近下载
- 数字孪生流域建设技术导则.pdf VIP
- 拼音纸A4纸可打印.pdf VIP
- 人教版小学数学 二年级下册 电子教案集(最全).doc
- 模块三:全过程造价管理综合应用-----第八套.docx VIP
- 医疗器械经销商管理规定.pptx
- 电力建设发电项目施工汽机专业施工方案.pdf VIP
- JB_T 10764-2023 无损检测 常压金属储罐声发射检测及评价方法.pdf
- T∕CPCACN 0002-2016 卫生杀虫剂、杀鼠剂采购指南 水印版.pdf
- 飞腾腾珑E2000数据手册V0.8.4版本-D.pdf
- 党支部副书记2024-2025年组织生活会个人对照检查(围绕严守政治纪律和政治规矩,维护党的团结统一;增强党性、严守纪律,砥砺作风;在遵规守纪、清正廉洁前提下勇于担责、敢于创新;履行全面从严治党政治责任方面).docx VIP
文档评论(0)