一、C语言出错有两种情况

上传人:飞*** 文档编号:46136057 上传时间:2018-06-22 格式:PPT 页数:63 大小:138KB
返回 下载 相关 举报
一、C语言出错有两种情况_第1页
第1页 / 共63页
一、C语言出错有两种情况_第2页
第2页 / 共63页
一、C语言出错有两种情况_第3页
第3页 / 共63页
一、C语言出错有两种情况_第4页
第4页 / 共63页
一、C语言出错有两种情况_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《一、C语言出错有两种情况》由会员分享,可在线阅读,更多相关《一、C语言出错有两种情况(63页珍藏版)》请在金锄头文库上搜索。

1、一、C语言出错有两种情况: 1、语法错误。指编程时违背了C语法的规定,对这 类错误,编译程序一般都能够给出“出错 信息”,并且告诉在哪一行出错及出错的 类型。只要仔细检查,是可以很快发现 错误并排除的。 2、逻辑错误。 程序并无违背语法规则,但程序 执行结果与原意不符。这是由于程序 设计人员写出的源程序与设计人员的 本意不相同,即出现了逻辑上的混乱 。 例如: unsigned char i=1;unsigned int sum=0;while (iy ? x:y)在上例的程序中,max函数在main函数之后定义,在调用之前又没有说明,因此出错 。应在调用前对函数进行说明:main ()flo

2、at max (float x,float y);float x=2.0,y=6.0,z;z=max(x,y);printf (“%f“,z);float max (float x,float y)return (xy ? x:y);也可以将函数max在函数main之前定义。23、误认为形参值的改变会影响实参的值例如:main ()int x=3,y=4;swap(x,y);printf (“%d,%d“,x,y);int swap (int x,int y)int z;z=x;x=y;y=z;在上例中,设计者的意图本想是利用swap函数交换x和y的值,但是由于实参和形参之间单向传递,在函数s

3、wap中 改变了x和y值,main中的x和y是不会改变的。可以改为使用指针的形式,如下:main ()int x=3,y=4;int *p1,*p2;p1=swap(p1,p2);printf (“%d,%d“,x,y);int swap (int *p1,int *p2)int z;z=*p1;*p1=*p2;*p2=z;说明:虽然函数swap在调用函数之后定义,而且在函数main调用之前又没有说明,但是由于swap返回值为整型 ,C语言规则返回值为整形的函数在调用之前可以不必说明,因此本例中是符合C语法规定的。24、函数的实参和形参类型不致。还是使用上例:main ()int x=3,y=

4、4;int *p1,*p2;p1=swap(p1,p2);printf (“%d,%d“,x,y);int swap (int p1,int p2)int z;z=p1;p1=p2;p2=z; C要求实参与形参的类型一致,一个为指向 整型变量的指针,另一个为整型变量,类 型不同,因此编译出错。25、不同类型的指针混用例如:main ()char x=3,*p1;int *p2;p1=p2=p1;printf (“%d,%d“,x,y);在上例中,设计者本意是想将指针p1所指的值赋p2,但是由于p1与p2所指向的类型不同,不能赋值。在赋值时必 须进行强制类型转换。如:main ()char x=

5、3,*p1;int *p2;p1=p2=(int *)p1;printf (“%d,%d“,*p1,*p2);指向不同类型的指针变量进行强制转换后赋值,在C中是常用的,例如,用malloc函数开辟的数据存储单元,函数 的返回值是一个空指针(void),需要用强制转换成指向所需存储类型,如指向一个结构体,用以组成一个链表:struct strint a;struct str *next;*p1;/* 用户程序列 */p1=(struct str *)malloc (size_t,size)在ICCAVR中,malloc函数返回的是void类型的指针,将其强制转换为struct str类型的结构体指针。 26、混淆数组与指针变量的区别例如:main ()int i,a5;for (i=0;i10时,二者 结果就不同了。因为while循环是先判断后 执行,而do-while循环是先执行后判断。 对于大于10的数while循环一次也不执行循 环体,而do-while语句则要执行一次循环 体。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 研究报告 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号