人较笨且记性不好,故记录在此.折叠代码打不开请F5.本博中很多是转载收录其他网友的文章(原文地址请见博文末尾),所有权为原作者所有!!!
此博客已不再更新和维护,欢迎关注我的github新博客

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: :: 管理 ::

  书目详情请见:C语言大学实用教程/21世纪大学计算机系列教材

1、运算符的结合性概念是什么?
  m = -n++;  // 当n=3时,m=_?_ ;  自己去实际验证吧!

2、测试程序只能证明程序有错,而不能证明程序无错。
  当项目经理问程序猿“bug什么时候能修完?”的时候,程序猿应该紧紧抱住项目经理说:“我真没用,竟然让你问这样的问题!” ——这就是真理

3、增量测试
  又叫“
探索测试” ?

  测试人员建立测试的效率常常受到以往测试结果的影响。这种方法称为探索测试法(Exploratory Testing),是确定如何测试的第一步。
  探索应用程序以及熟悉应用程序的功能是学习过程中的一个必要的步骤。测试人员在开始任何测试前必须熟悉应用程序。这种探索可以采取多种形式:
  1.学习已有的测试指南或培训教材;
  2.阅读任何已有的最终用户或工程文档;
  3.请专业人员演示应用程序;
  4.输入随机数据和命令;
  5.执行所有操作选项;
  6.以好奇心和求知欲尝试程序的运行状态。
  在探索的过程中,测试人员通过观察程序的行为来观察程序如何工作,感觉什么样的输入是好的 ,什么样的输入是不好的。当应用程序的显示结果与测试人员预期的结果不同时,则有可能存在潜在的问题。
  探索的目的在于通过对应用程序功能的操作更多地了解应用程序。这只是探索测试法的一个方面。只要你在执行当前的测试时是基于观察来建立新的测试,那么你就是在使用探索测试法。
  探索的另一个重要任务是找到了解应用程序并有权澄清需求的人。

  非增量测试

4、assert  头文件<assert.h>  这个不错,以后编码是自定义函数必定靠此检查参数有效性,并且必定判断函数返回值.

5、头文件里对全局变量的声明需加上extern关键字。

6、二维数组及以上传递是必告之,如[][X][X]...

7、字符里一维数组中最后一个元素是'\0'才构成字符串。

8、单项值传递  →即实参传递给形参

9、行指针、列指针  想想就能明白,借助矩阵来思考更简单。只是之前没有注意

10、返回结构体

11、位段  这个有意思,比较节约内存,见下文

  以前曾介绍过对内存中信息的存取一般以字节为单位。实际上,有时存储一个信息不必用一个或多个字节,例如,“真”或“假”用0或1表示,只需1位即可。在计算机用于过程控制、参数检测或数据通信领域时,控制信息往往只占一个字节中的一个或几个二进位,常常在一个字节中放几个信息。那么,怎样向一个字节中的一个或几个二进位赋值和改变它的值呢?
  C语言允许在一个结构体中以位为单位来指定其成员所占内存长度,这种以位为单位的成员称为“位段”或称“位域” ( bit field) 。利用位段能够用较少 的位数存储数据。
  例如:  
struct packed-data   
{
unsigned a:2;
unsigned b:6;
unsigned c:4;
unsigned d:4;
int i;
}data;
  其中a、b、c、d分别占2位、6位、4位、4位。i为整型。共占4个字节。 也可以使各个位段不恰好占满一个字节。
  如:    
struct packed-data     
{
unsigned a:2;
unsigned b:3;
unsigned c:4;
int i;
};
  struct packed-data data;
  其中a、b、c共占9位,占1个字节多,不到2个字节。它的后面为int型,占2个字节。在a、b、c之后7位空间闲置不用,i从另一字节开头起存放。注意,在存储单元中位段的空间分配方向,因机器而异。在微机使用的C系统中,一般是由右到左进行分配的。但用户可以不必过问这种细节。对位段中的数据引用的方法。如:
data.a=2;
data.b=7;
data.c=9;
  注意位段允许的最大值范围。
  如果写data.a=8;就错了。因为data.a只占2位,最大值为3。在此情况下,自动取赋予它的数的低位。例如,8的二进制数形式为1000,而data.a只有2位,取1000的低2位,故data.a得值0。
  关于位段的定义和引用,有几点要说明:
  (1) 位段成员的类型必须指定为unsigned或int类型。
  (2) 若某一位段要从另一个字开始存放。可以用以下形式定义:
    unsigned a:1; unsigned b:2; (一个存储单元)
    unsigned:0; unsigned c:3;  (另一存储单元) 
  本来a、b、c应连续存放在一个存储单元(字)中,由于用了长度为0的位段,其作用是使下一个位段从下一个存储单元开始存放。因此,现在只将a、b存储在一个存储单元中,c另存放在下一个单元。(上述“存储单元”可能是一个字节,可能是29字节,视不同的编译系统而异。)
  (3) 一个位段必须存储在同一存储单元中,不能跨两个单元。如果第一个单元空间不能容纳下一个位段,则该空间不用,而从下一个单元起存放该位段。
  (4) 可以定义无名字段。如:
    unsigned a:1; unsigned :2;(这两位空间不用) unsigned b:3; unsigned c:4;
  在a后面的是无名位段,该空间不用。
  (5) 位段的长度不能大于存储单元的长度,也不能定义位段数组。
  (6) 位段可以用整型格式符输出。如:printf("%d,%d,%d",data.a,data.b,data.c); 当然,也可以用%u、%o、%x等格式符输出。
  (7) 位段可以在数值表达式中引用,它会被系统自动地转换成整型数。如:data.a+5/data.b是合法的。
 
【参考资料 感谢作者】
1、增量測試法——探索测试
2、非增量式测试
3、位段

 
posted on 2012-03-28 20:58  子坞  阅读(946)  评论(0编辑  收藏  举报