网站大量收购闲置独家精品文档,联系QQ:2885784924

一C语言出错有两种情况.ppt

  1. 1、本文档共64页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在上例中,C编译系统会提示变量B、C没有定义。应改为: main?() { int?a,B,C; a=0; B=1; C=a+B; } 13、引用数组元素时误用圆括号 main?() { int?i,a[10]; for?(i=0;i10;i++) ???scanf?(%d,a(i)); } 通常情况下,C程序编译出错,但是如果恰好有一个函数a(),则通常情况都可以通过编译,那查起错误来就更麻烦了。 14、引用数组元素超界 例如: main?() { int?i,a[5]={1,2,3,4,5}; for?(i=1;i=5;i++) ???printf?(%d,a[i]); } 上例中,本意是想输出数组a的全部元素,实际上,定义的数组a[5]中,只有a[0]~a[4],5个元素,并不存在a[5]。应改为如下形式: main?() { int?i; int?a[5]={1,2,3,4,5}; for?(i=0;i5;i++) ???printf?(%d,a[i]); } 15、对二维或多维数组定义和引用的方式不对 例如: main?() { int?a[5,4], /*??其它程序??*/ } 在C语中,对二维数组和多维数组在定义和引用时必须将每一维数组中的数据分别用方括号括起来,因此定义一个二维数组,应改为: int?a[5][4]; 16、误以为数组名代表整个数组 例如: main?() { int?a[5]={1,2,3,4,5}; printf?(%d,%d,%d,%d,%d,a); } 在上例中,本意是输出数组a中的全部元素,但是数组名a却只是代表数组的首地址,并不能代表数组中的所有元素,因此并不能得到所需的结果,应改为: main?() { int?a[5]={1,2,3,4,5}; printf?(%d,%d,%d,%d,%d,a[0],a[1],a[2],a[3],a[4]); } 17、混淆字符数组与字符指针的区别 例如: main?() { char?str[10]; str=ICCAVR; printf?(%s\n,str); 在上例中,编译必定出错。因为str[10]是一个数组,str代表数组名,是一个常量,不能被赋值,可将str改为指针变量,将字符串ICCAVR的首地址赋值给指针变量str,然后在Printf函数中输出字符串。如下: main?() { char?*str; str=ICCAVR; printf?(%s\n,str); } 如果坚持要使用数组,一种方式为初始化时赋值,另一种只能在程序中一个一个元素进行赋值。分别如下: main?() { char?str[10]=ICCAVR; printf?(%s\n,str); } 或 main?() { char?str[10]; str[0]=I;str[1]=C;str[2]=C;str[3]=A;str[4]=V; str[5]=R;str[6]=\0;str[7]=\0;str[8]=\0;str[9]=\0; printf?(%s\n,str); } 要注意: char?str[10]=ICCAVR; 和 char?str[10]; str=ICCAVR; 是不相同的。 18、在引用指针变量之前没有对它赋值 main?() { char?*p; scanf?(%s,p); /*??用户程序??*/ } 没有给指针变量赋值就使用它,由于指针变量p的值不确定,因此有可能误指向有用的存储空间,导致程序运行出错。应当改为: main?() { char?*p,str[20]; p=str; scanf?(%s,p); /*??用户程序??*/ } 19、switch语句的各分支漏写了break语句 例如: switch?(time) { case?0?:?a=0; case?1?:?a=0; case?2?:?a=2; defult?:?a=3; } 上例中,本意是根据time的值来决定a的值,但是最后程序执行的结果都一样(a=3),因为漏写了break语句,程序将从相应的case开始顺序执行,应改为: switch?(time) { case?0?:?a=0;?break; case?1?:?a=0;?break; case?2?:?a=2;?break; defult?:?a=3; } 20、混淆了字符和字符串的表示形式 例如: char?sex; sex=M; 一、C语言出错有两种情况:

文档评论(0)

189****7685 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档