c语言常见错误及解决方法_第1页
c语言常见错误及解决方法_第2页
c语言常见错误及解决方法_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C 语言常见错误及解决方法 既然我前边总结了那么多关于 C 语言常见错误那么现在给大家分享一下 C 语言常见错误及 解决方法,关于 C 语言常见错误及解决方法是针对大家的通病说提出的解决方法,大家可 以参考一下。 C 语言常见错误及解决方法一、基础知识和数据类型、表达式、掌握关键词的具体用法及 适用范围对象。 1、 拼写错误,尤其是 include,main,void,float 等词。C 语言的 32 个关键字与基本含义如下: double :声明双精度变量或函数 int: 声明整型变量或函数 char :声明字符型变量或函数 float:声明浮点型变量或函数 void :声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用) auto :声明自动变量 一般不使用 struct:声明结构体变量或函数 break:跳出当前循环 else :条件语句否定分支(与 if 连用) long :声明长整型变量或函数 switch :用于开关语句 case:开关语句分支 enum :声明枚举类型 register:声明积存器变量 typedef:用以给数据类型取别名(当然还有其他作用) extern:声明变量是在其他文件正声明(也可以看做是引用变量) return :子程序返回语句(可以带参数,也看不带参数) union:声明联合数据类型 const :声明只读变量 short :声明短整型变量或函数 unsigned:声明无符号类型变量或函数 continue:结束当前循环,开始下一轮循环 for:一种循环语句(可意会不可言传) signed:生命有符号类型变量或函数 default:开关语句中的“其他 ”分支 goto:无条件跳转语句 sizeof:计算数据类型长度 volatile:说明变量在程序执行中可被隐含地改变 do :循环语句的循环体 while :循环语句的循环条件 static :声明静态变量 if:条件语句 2、 , , () , , “”不配对。解决这个问题最好的方法就是每当写这些符号的时候 就先写成一对,然后再在中间加内容。 3、 忘记在语句的末尾加分号,或在预处理命令后多加分号。记住:每一个语句的后边都 要加分号,而预处理命令并不是语句,所以不加分号,他们必须每行一条,不能把多个命 令写在一行。 4、 混淆/和;注释对应的符号是,而转义字符是以开头,除号是/。 5、 printf()和 scanf()的参数设置有误,主要表现在以下几方面: l 类型不匹配的问题。 (例如:有 float a=3.5,但输出的时候 printf(“a=%d”,a);则 屏幕上会显示出 a=0.00000 或者提示其它运行错误) 。基本原则是:float 对应%f, int 对应% d, char 对应%c。 l 个数不匹配。无论是哪个函数,都可以有 n 个参数,第一个永远是“”括起来 的内容,表示输出格式。剩下的 n-1 个是输出的变量或者输入的变量的地址。需要注意的 是,如果后边有 n-1 个参数,那么前边一定对应 n-1 个%f 一类的格式说明符。 l scanf()中变量前忘了加。记住:scanf() 中变量前要有 (但后边学到的字符数 组名和指针前不用加) 6、 定义标识符的时候经常出现使用非法字符的情况,例如:标识符中不能用空格,也就 是说不能有这样的定义:int radium of circle;一般情况下可用下划线将三个单词连接在一起。 7、 在使用变量前未定义,或未初始化。例如:若下边的 sum 未定义,则在编译时会提 示相应的错误信息,而若未初始化为 0,则求和的结果一定是错误的。 void main() int I,a10, sum=0; for(I=0;I。 C 语言常见错误及解决方法二流程控制,了解控制流程的来龙去脉,掌握起运行规律。 1、 丢掉语句结束标记 “;” ,尤其是 for 语句中表达式后或 do-while 语句后的分号,或 在预处理命令后边、while()后、for()后加“;” ; 2、 If 语句或循环语句中逻辑表达式或关系表达式书写错误。一定要注意 C 语言的条件 与数学表达式的区别(例如我们数学中经常写到的 0x9,在 C 语言中应该写成 x=0 5、 随意修改循环控制变量 i 的值,导致循环次数的改变,尤其是当循环有嵌套时。在循 环体中,不要将循环控制变量进行另外的改变。 6、 分不清什么情况下用双重循环,什么情况下用两个控制变量写成一重循环。当 I 不变, j 又循环一遍的时候用双重循环。当 I,j 同时变化的时候用一重循环,此时,循环控制变量 有两个,但条件只写一个就可以,因为另一个总是进行相应的变化的。 7、 忽略循环体与循环控制变量的关系。其实,很多情况下,循环控制变量都在循环体中 起到非常重要的作用。应该利用上这种关系。 三、数组与指针 1、 字符串的输入有错误:主要表现在使用 scanf()或 gets()时加了,或输入字符串时用循 环, (这样的话,字符个数无论多长,都不会为自动加0 ,将来引用的时候也就不能以字符 串的形式引用。 ) 2、 对字符串的处理中,循环条件仍然写成 IN。由于字符串是不定长的,所以循环条件 一般为 strI!=0 或 Istrlen(str) 3、 而输入所对应的变量是指针时(常见的有:输入的变量是字符数组名或指向字符串的 指针)不能加。 4、 指针定义后未赋值就引用。如果在定义时不知道赋什么值,可以用 p=NULL 赋初值, 以避免引起的灾难性错误。 5、 分不清 p 和p。前者是指针,即地址,后者表示指针所间接引用的数据,但如果是 二级指针或多级指针,取*以后得到的仍然可能是地址。 四、函数 1、 函数定义的时候,函数头部加分号,而函数声明的地方忘了加分号 2、 函数实参格式不对,主要表现在:给出实参时,多给出数组类型,或者,形参是数组 int a;的时候,给出的 a或 aI. 3、 递归时忘了设置边界条件,这样易造成死循环调用。 4、使用函数之前未声明(包括 C 库函数的声明) 。建议大家,将所定义的一切函数都在程 序开始的预处理命令后加上函数原型的声明,这样做不仅可以避免错误,而且整个程序的 结构看起来更清楚。 五、结构体共用体 1、 结构体类型定义有误,主要表现在:结构体类型里还有嵌套的时候,忘记了成员名称。 (例如:下边的例子中,有些同学经常忽略了 birthday) 2、 结构体类型名和结构体变量名混淆。例如: struct STU . Struct data int year,month,day; birthday ; struct STU a; struct STU 是类型名称,而且不分配空间,且不能直接引用。只有定义了结构 体类型 struct STU 的变量 a 以后,才为 a 分配相应的内存空间,引用时也要是 a.? 3、 结构体变量的成员引用不正确,尤其是当结构体类型中有嵌套定义的时候。一定要一 级一级的引用。例如:上边的例子:如果引用其中的年的话,一定是 a.birthday.year. 不能 直接 a.year. 4、 对结构体变量进行输入输出的时候,整体输入或整体输出。除作为函数参数外,不能 对结构体变量整体操作,只能一个成员一个成员地输

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论