本次搜索共找到约 200 条相关记录,编程结果如下
名称--Unix编程/应用问答中文版版本--0.03(2002-03-06外发版)维护--小四<cloudsky@263.net>or<scz@nsfocus.com>主页--http://www.nsfocus.com创建--2001-02-0513:49更新--2002-03-0317:42感谢--感谢C语言的发明者、Unix操作系统的发明者、感谢全世界C程序员创造的Unix共享传统文化圈,她...
附录B:C++/C试题本试题仅用于考查C++/C程序员的基本编程技能。内容限于C++/C常用语法,不涉及数据结构、算法以及深奥的语法。考试成绩能反映出考生的编程质量以及对C++/C的理解程度,但不能反映考生的智力和软件开发能力。笔试时间90分钟。请考生认真答题,切勿轻视。一、请填写BOOL,float,指针变量与“零值”比较的if语句。(10分)提示:这里“零值”可以是0,0.0,FALSE或者“...
附录A:C++/C代码审查表文件结构重要性审查项结论头文件和定义文件的名称是否合理?头文件和定义文件的目录结构是否合理?版权和版本声明是否完整?重要头文件是否使用了ifndef/define/endif预处理块?头文件中是否只存放“声明”而不存放“定义”……程序的版式重要性审查项结论空行是否得体?代码行内的空格是否得体?长行拆分是否得体?“{”和“}”是否各占一行并且对齐于同一列?重要一行代码是否...
第11章其它编程经验11.1使用const提高函数的健壮性看到const关键字,C++程序员首先想到的可能是const常量。这可不是良好的条件反射。如果只知道用const定义常量,那么相当于把火药仅用于制作鞭炮。const更大的魅力是它可以修饰函数的参数、返回值,甚至函数的定义体。const是constant的缩写,“恒定不变”的意思。被const修饰的东西都受到强制保护,可以预防意外的变动,能提...
第10章类的继承与组合对象(Object)是类(Class)的一个实例(Instance)。如果将对象比作房子,那么类就是房子的设计图纸。所以面向对象设计的重点是类的设计,而不是对象的设计。对于C++程序而言,设计孤立的类是比较容易的,难的是正确设计基类及其派生类。本章仅仅论述“继承”(Inheritance)和“组合”(Composition)的概念。注意,当前面向对象技术的应用热点是COM和C...
第9章类的构造函数、析构函数与赋值函数构造函数、析构函数与赋值函数是每个类最基本的函数。它们太普通以致让人容易麻痹大意,其实这些貌似简单的函数就象没有顶盖的下水道那样危险。每个类只有一个析构函数和一个赋值函数,但可以有多个构造函数(包含一个拷贝构造函数,其它的称为普通构造函数)。对于任意一个类A,如果不想编写上述函数,C++编译器将自动为A产生四个缺省的函数,如A(void);//缺省的无参数构造...
第8章C++函数的高级特性对比于C语言的函数,C++增加了重载(overloaded)、内联(inline)、const和virtual四种新机制。其中重载和内联机制既可用于全局函数也可用于类的成员函数,const与virtual机制仅用于类的成员函数。重载和内联肯定有其好处才会被C++语言采纳,但是不可以当成免费的午餐而滥用。本章将探究重载和内联的优点与局限性,说明什么情况下应该采用、不该采用以...
7.7杜绝“野指针”“野指针”不是NULL指针,是指向“垃圾”内存的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是“野指针”是很危险的,if语句对它不起作用。“野指针”的成因主要有两种:(1)指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的...
第7章内存管理欢迎进入内存这片雷区。伟大的BillGates曾经失言:640Koughttobeenoughforeverybody—BillGates1981程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本章的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。7.1内存分配方式内存分配方式有三种:(1...
第6章函数设计函数是C++/C程序的基本功能单元,其重要性不言而喻。函数设计的细微缺点很容易导致该函数被错用,所以光使函数的功能正确是不够的。本章重点论述函数的接口设计和内部实现的一些规则。函数接口的两个要素是参数和返回值。C语言中,函数的参数和返回值的传递方式有两种:值传递(passbyvalue)和指针传递(passbypointer)。C++语言中多了引用传递(passbyreference...
第5章常量常量是一种标识符,它的值在运行期间恒定不变。C语言用#define来定义常量(称为宏常量)。C++语言除了#define外还可以用const来定义常量(称为const常量)。5.1为什么需要常量如果不使用常量,直接在程序中填写数字或字符串,将会有什么麻烦?(1)程序的可读性(可理解性)变差。程序员自己会忘记那些数字或字符串是什么意思,用户则更加不知它们从何处来、表示什么。(2)在程序的很...
第4章表达式和基本语句读者可能怀疑:连if、for、while、goto、switch这样简单的东西也要探讨编程风格,是不是小题大做?我真的发觉很多程序员用隐含错误的方式写表达式和基本语句,我自己也犯过类似的错误。表达式和语句都属于C++/C的短语结构语法。它们看似简单,但使用时隐患比较多。本章归纳了正确使用表达式和语句的一些规则与建议。4.1运算符的优先级C++/C语言的运算符有数十个,运算符的...
第3章命名规则比较著名的命名规则当推Microsoft公司的“匈牙利”法,该命名规则的主要思想是“在变量和函数名中加入前缀以增进人们对程序的理解”。例如所有的字符变量均以ch为前缀,若是指针变量则追加前缀p。如果一个变量由ppch开头,则表明它是指向字符指针的指针。“匈牙利”法最大的缺点是烦琐,例如inti,j,k;floatx,y,z;倘若采用“匈牙利”命名规则,则应当写成intiI,iJ,ik...
第2章程序的版式版式虽然不会影响程序的功能,但会影响可读性。程序的版式追求清晰、美观,是程序风格的重要构成因素。可以把程序的版式比喻为“书法”。好的“书法”可让人对程序一目了然,看得兴致勃勃。差的程序“书法”如螃蟹爬行,让人看得索然无味,更令维护者烦恼有加。请程序员们学习程序的“书法”,弥补大学计算机教育的漏洞,实在很有必要。2.1空行空行起着分隔程序段落的作用。空行得体(不过多也不过少)将使程序...
第1章文件结构每个C++/C程序通常分为两个文件。一个文件用于保存程序的声明(declaration),称为头文件。另一个文件用于保存程序的实现(implementation),称为定义(definition)文件。C++/C程序的头文件以“.h”为后缀,C程序的定义文件以“.c”为后缀,C++程序的定义文件通常以“.cpp”为后缀(也有一些系统以“.cc”或“.cxx”为后缀)。1.1版权和版本...
前言软件质量是被大多数程序员挂在嘴上而不是放在心上的东西!除了完全外行和真正的编程高手外,初读本书,你最先的感受将是惊慌:“哇!我以前捏造的C++/C程序怎么会有那么多的毛病?”别难过,作者只不过比你早几年、多几次惊慌而已。请花一两个小时认真阅读这本百页经书,你将会获益匪浅,这是前面N-1个读者的建议。一、编程老手与高手的误区自从计算机问世以来,程序设计就成了令人羡慕的职业,程序员在受人宠爱之后容...
7编程指南本章给出线程编程的一些要点。特别强调了单线程和多线程编程方法的差别。重新认识全局变量提供静态局部变量线程同步避免死锁一些基本的注意事项用多处理器编程在历史上,大多数代码以单线程的方式来编程。如果在C程序里调用库函数则尤其是这样:·如果你给全局变量赋值,并且在一会以后读该变量,则读的结果和写的是一样的。·对于非全局的,静态存储也是如此·不需要同步机制,因为没有什么可以同步的在下面的几个多线...
6编译和调试本章描述了怎样编译和调试多线程程序。编译一个多线程应用程序调试一个多线程应用程序6.1编译一个多线程应用程序6.1.1使用C编译器确认你拥有如下软件,否则将无法正常编译和连接多线程程序·头文件:thread.herrno.h·标准C编译器·标准Solaris连接器·线程库(libthread)·MT-Safe库(libc,libm,libw,libintl,libmalloc,libm...
5.安全和不安全的接口本章定义了函数和库的多线程安全等级。线程安全多线程接口安全等级异步安全函数库的多线程安全等级5.1线程安全线程安全是为了避免数据竞争--数据设置的正确性依赖于多个线程修改数据的顺序。如果不需要共享,则给每个线程分配一个私有的数据拷贝。如果数据必须共享,一定要用同步机制来保证操作的唯一性。如果一个线程在几个线程同时执行时在逻辑上是正..的。在一个实际的水平上,把安全等级划分为3...
4.操作系统编程本章讨论多线程编程如何和操作系统交互,操作系统作出什么改变来支持多线程。进程--为多线程而做的改动警告(alarm),计数器(intervaltimer),配置(profiling)全局跳转--setjmp(3C)和longjmp(3C)资源限制LWP和调度类型扩展传统信号I/O问题4.1进程--为多线程而做的改变4.1.1复制父线程fork(2)用fork(2)和fork1(2)...