这几天看了林锐的高质量c编程,因此,有一点感想,发表在这里
一、首先,看本书最大的体会,是作者对c编程细节方面的处理很到位,包括头文件的定义格式,算法主体中,程序的版式,文件、变量的命名都有着严格的规则。今天我刚打来这本书,因此可能来不及看完,所以选取了他函数设计和指针相关章节。
二、
1、在函数设计方面,良好的代码风格,在定义函数时,应该有详细的参数,且参数的命名应该合理。如果参数是指针,且仅作输入用,则应在类型前加const,以防止指针在函数体内被意外修改。如果输入参数以值传递的方式传递对象,则宜改用“const &”方式来传递,这样可以省去临时对象的构造和析构过程,从而提高效率。参数应该尽量少,并且不要使用类型不明确的参数。
2、要指明函数返回值类型,如果没有返回值,也应该注明。函数名字和返回值类型不可冲突,正常返回和错误返回,在编写程序的过程中,要严格区分开。如果函数的返回值是一个对象,有些场合用“引用传递”替换“值传递”可以提高效率。而有些场合只能用“值传递”而不能用“引用传递”,否则会出错。
3、函数体的“入口处”,对参数的有效性进行检查,在函数体的“出口处”,对return 语句的正确性和效率进行检查,函数的功能要单一,单个函数尽量控制在50行以内。
三、
1、在内存分配分为在堆上分配(动态分配),在栈上分配,以及在静态存储区分配。
2、在使用指针进行调用时,应该先用if(fp==null)防止内存分配不成功。并且,即便分配成功了,也必须进行初始化等等,一旦发生错误操作,就会导致指针指向未知的内存空间,从而发生错误。
3、2、动态内存在使用后一定要进行释放,在释放后,若不讲指针初始化为null,就会生成野指针。在这里,我还区别了指针和数组的概念,以及指针参数传递内存的方式。发现指针p 被free 以后其地址仍然不变(非NULL),只是该地址对应的内存是垃圾,这是,指针就成了野指针。“野指针”不是NULL 指针,是指向“垃圾”内存的指针,野指针的生成原因有以下几点:1指针变量没有被初始化 2指针p 被free 或者delete 之后,没有置为NULL,让人误以为p 是个合法的指针 3指针操作超越了变量的作用范围。
今天看的内容大概就是这些,剩下的我会在这周内看完。
#ifnfef
#endif
在头文件中防止变量的重复引用,通常用这个模块产生预处理块。