c语言调试常见错误.doc
文本预览下载声明
第Ο大类:基础性错误
1.指法错误,多为某些关键字的误写如
main写成了mian
printf写成了printtf,print等
变量上下部一致,比如int charat ,到了下行又写成int chart等
2.创建程序的时候一个工程没有只含一个main函数
3.创建c语言程序时候扩展名没有改为.c ? 一、第一类错误分析 1在使用变量前未定义。 例如: main() {a=1; b=2; printf(″%d\n″, a+b); } 2语句后面漏写分号或不该加分号的地方加了分号。 C语言规定,语句必须以分号结束,分号是C语句不可缺少的一部分,这也是和其它高级语言不同的一点。初学者往往容易忽略这个分号。 如: x=1 y=2; 又如在复合语句中漏写最后一个语句的分号: {t=x; x=y; y=t } 3不该有空格的地方加了空格 例如,在用/*...*/对C程序中的任何部分作注释时,/与*之间都不应当有空格。 又如,在关系运算符<=,>=,==和!=中,两个符号之间也不允许有空格。
4定义或引用数组的方式不对。 C语言规定,在对数组进行定义或对数组元素进行引用时必须要用方括号(对二维数组或多维数组的每一维数据都必须分别用方括号括起来),例如以下写法都将造成编译时出错: int a(10); int b[5,4]; printf(″%d\n″, b[1+2,2]); 5混淆字符和字符串 C语言中的字符常量是由一对单引号括起来的单个字符;而字符串常量是用一对双引号括起来的字符序列。字符常量存放在字符型变量中,而字符串常量只能存放在字符型数组中。例如, 假设已说明num是字符型变量,则以下赋值语句是非法的: num=″1″;
6在引用数组元素或指针变量之前没对其赋初值。 例如: main() main() {int a[6],b; {int *ptr, i=1; b=a[5]; *ptr=i } } 以上两个程序段在编译时均会出现警告信息。
7混淆数组名与指针变量 在C语言中,数组名代表数组的首地址,它的值是一个常量,不能被修改。例如,在以下程序段中,用a++是不合法的。 main() {int i, a[10]; for (i=0;i<10;i++) scanf(″%d″, a++); }
8混淆不同类型的指针。 若有以下语句: int *p1, a=1; float *p2; p1=a; 则赋值语句p2=p1是非法的。
9混淆指针说明语句中的*号和执行语句中的*号。 设有以下说明语句: int *p1, i=1; 则 *p1=i;是不合法的。
10误将函数形参和函数中的局部变量一起定义。 例如: fun(x,y) float x, y, z; {x++; y++; z=x+y; }
11所调用的函数在调用前未定义。 main() {float a=10, b=20, c; c=fun(a,b); } float fun(x, y) float x, y; {x++; y++; }
12混淆结构体类型名和结构体变量名。 若定义了以下结构体类型student: struct student {long int num; char name[20]; int age; float score; }; 则赋值语句:student.num=1
显示全部