A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 54hxd52lj 中级黑马   /  2014-6-1 14:49  /  1374 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

16、混淆字符数组与字符指针的区别。例如:
  1. void main()
  2. {
  3. char str[4];
  4. str="computer and c";
  5. printf("%s\n",str);
  6. }
复制代码
       str是数组名,代表数组首地址。在编译时对str数组分配了一段内存单元,因此在程序运行期间str是一个常量,不能再被赋值。应把“char str[4];”改为“char *str;“,此时str是指向字符数据的指针变量。
17、在引用指针变量之前没有对它赋予确定的值。例如:
  1. void main()
  2. {
  3. char *p;
  4. scanf("%s",p);
  5. ...
  6. }
复制代码
       没有给指针变量p赋值就引用它,应改为
  1. void main()
  2. {
  3. char *p,c[20];
  4. p=c;
  5. scanf("%s",p);
  6. ...
  7. }
复制代码
       先根据需要定义一个大小合适的字符数组c,然后将c数组的首地址赋给指针变量p,此时p有确定的值,指向数组c。再执行scanf函数就没有问题了,把从键盘输入的字符串存放到字符数组c中。

18、switch语句的各分支中漏写break语句。
19、混淆字符和字符串的表示形式。单撇号' '是用来存放单个字符的,双撇号" "是用来存放字符串的。
20、使用自加(++)和自减(--)运算符时出现错误。例如:*p++的作用是先输出p的原指向值,然后p再加1;*(++p)的作用是先把p加1,然后再输出p当前所指向的值。
21、所调用的函数在调用语句之后才定义,而又在调用前未声明。
22、对函数声明与函数定义不匹配。
23、在需要加头文件时没用用#include去包含头文件。例如:
        程序中用到fabs函数,没有用#include<math.h>
        程序中用到输入输出函数,没有用#include<stdio.h>
        程序中用到字符串函数,没用用#include<string.h>
24、误认为形参值的改变会影响实参的值。
25、函数的形参和实参类型不一致。
26、不同类型的指针混用。
27、没有注意函数参数的求值顺序。
28、混淆数组名与指针变量的区别。例如:
  1. void main()
  2. {
  3. int i,a[5];
  4. for(i=0;i<5;i++)
  5.   scanf("%d",a++);
  6. ...
  7. }
复制代码
       程序企图通过a的改变使指针下移,每次指向欲输人数据的数组元素。它的错误在于不了解数组名代表数组首地址,它的值是不能改变的,用a++是错误的,应当用指针变量来指向各数组元素。即:
  1. int i,a[5],*p;
  2. p=a;
  3. for(i=0;i<5;i++)
  4. scanf("%d",p++);
复制代码
       或
  1. int a[5],*p;
  2. p=a;
  3. for(p=a;p<a+5;p++)
  4. scanf("%d",p);
复制代码
29、混淆结构体类型与结构体变量的区别,对一个结构体类型赋值。

30、使用文件时忘记打开,或打开方式与使用情况不匹配。此外,有的程序常忘记关闭文件,虽然系统会自动关闭所用文件,但可能会丢失数据。因此必须在用完文件后关闭它。
31、在深入使用C语言后,还会出现其他一些更深入、更隐蔽的错误。例如语法错误、逻辑错误、运行错误等。

2 个回复

倒序浏览
好用心的说呢。。。加油!!
回复 使用道具 举报 1 0
★Joean_Zhou 发表于 2014-6-2 07:39
好用心的说呢。。。加油!!

谢谢,我会继续努力地。:D
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马