BOB体验官网C入门知识经典教程
点击量: 发布时间:2023-01-14 05:26:47

  图中第一行是可执行程序 test.exe 的输出,第二行则不是.第二行是由 Visual Studio 6.0 开发环境执行完 test.exe 程序后输出的,表示按任意键继续,即按任何一个键就可返回 到开发环境中去.到此为止,本节就完整演示了在 Visual Studio 6.0 中开发一个典型的 C 程序的过程.

  体的使用还需要程序手工增加.如果在创建新工程时,选择创建 MFC 型工程,则 系统会自动创建一个 MFC 的使用框架. 出于演示的需要,这里选择第 3 种.单击 Finish 按钮,出现图 1-11 的对话框.

  一般来讲,工具栏会根据当前工作的不同而不同.例如,调试程序时,会出现调 试工具栏;编写数据库程序时,会出现数据库工具栏.如果要添加新的工具栏,只需 右击工具栏,然后在弹出的快捷菜单中选中需要的功能,它就会出现在工具栏上. 4.工程管理面板 工程管理面板包括 3 个选项卡,每个选项卡的功能如下所示. ClassView 选项卡显示工程中使用的类,函数,全局变量等,双击可以跳转到对应的 代码处,如图 1-4 所示. ResourceView 选项卡显示工程中使用的资源,双击可以编辑该资源,如图 1-5 所示. FileView 选项卡显示工程中使用的文件.文件按类型管理,双击可以进行编辑,如 图 1-6 所示.

  C程序通常会包括示例中所示的 3 部分. 1.第1个部分——注释部分 第 1 部分是整个文件的注释,指出该文件的作用和版权等信息. 2.第2部分——预处理部分 第 2 部分是预处理部分,既在编译前要处理的工作.这里是以#include 说明的头文件包 含代码#include iostream.h,它指示编译器在预处理时,将文件 iostream.h 中的代码嵌入到 该代码指示的地方. 其中#include 是编译指令. 头文件 iostream.h 中声明了程序需要的输入输 出操作的信息.

  5.编译运行 编译是对写好的程序进行检查,如果检查无误就会生成目标 代码.生成目标代码后,还需要进行链接才能生成最终的可执行 程序, 然后才能执行程序. 这些操作都要通过 Builder 菜单来完成. 该菜单主要用于编译,创建和执行应用程序,如图 1-7 所示. 菜单中 Compile 命令是编译当前文件,对当前文件进行语法 检查.Build 命令是链接当前工程,生成可执行文件.如果要编译 全部文件,就要选择菜单中的 Build All 命令.当编译好文件后, 可以单击 Execute 命令来执行程序.

  注释是为了增加程序的可读性和美观,给程序提供注解和备忘录.注解不能太多,也不 能太少.太多有碍阅读,太少不利于注解代码.C中的注释有行注释和块注释两种.行注 释用//,一次注释一行.块注释用/* */,星号中间是被注释的块,可以是多行,也可 以是单行. 【示例 1-2】 演示单行注释的使用方法.

  为了写出规整的注释,需要遵循下述几条规则. 不要滥用注释,只在必要的地方写注释,注释要准确,易懂,简洁. 注释要与被注释的内容一致,只能描述被注释的内容,而不能描述其他. 注释要放在被注释内容的上方,或者被注释语句的后面,以符合阅读习惯. 函数头部应该进行注释,列出函数的功能,可接收的参数,返回值等. 要对.h 和.cpp 文件进行注释,注释应该列出文件名,作者,功能,版本等. 对重要的语句,代码块,变量和操作等要给予充分明确的注释. 下面再给出对函数 add 的完整注释.

  保留字是系统预留的符号,这些符号已经被赋予特定的意义.所以程序员只能直接使用 它们而不能修改其定义.例如,保留字 int 和 float 分别被用来表示整型数据类型和浮点型数 据类型,for 和 while 则被用来表示循环语句.

  标识符的名称可以是一个字符,也可以是多个字符.第一个字符必须是字母或下划线, 后跟字母,数字,下划线的组合.标识符区分大小写.长度不得大于 32 个字符,而通常是前 8 个字符有效.例如,a,_a,a12 等都是标识符.但是 1,1a,?a,&a1 等都不是合法的标识 符.标识符的命名除了满足字符组合方面的原则外,还要遵循下述原则. 1.一致性 同一个模块内部的标识符命名要一致.例如,如果规定变量的首字母大写,用全部大写 表示常量,那么整个模块内都应该这么写. 2.准确性 用词要准确,可以望文生义,避免概念模糊或形式相近的标识符.例如,定义 Total 表

  示合计要比随意用一个变量来表示要明确的多.myFun,temp 等模糊概念的变量也要避免. 3.长度短,信息多 在保持准确性的前提性,要力争长度短,信息多.既用最短数目的字符数表示尽可能多 的信息.例如,用 Total 表示合计,而不用 TotalOfNumbers.

  C作为当今业界应用最为广泛的编程语言之一,其涵盖的内容非常广泛而多样.本节 将首先给读者一个初步的概念.

  编码规范是指编写代码时应该遵守的文字约束.一个好的编码规范不仅能够明显改善代 码的可读性,可管理性,还可以提高程序的可靠性,可修改性,可维护性,以及一致性,从 而保证代码的质量.当开发工作需要团队合作时,优秀,统一的编码规范更是合作能否成功 的关键.

  本节给出如下几项建议的代码风格. 程序块采用缩进风格.每个缩进为 4 个空格位,要用 TAB 键缩进,而不要混合使用 空格和 Tab 键. 每个函数不要太长.如果真的需要写很长,就将它拆成多个简单的函数. 避免使用过深的 if 语句嵌套.这样会增加代码的复杂度,降低可理解性.可以考虑 改成函数来调用. 双目操作符的前后加空格. 单目操作符前后不加空格. 尽量不要写太长的语句.如果实在需要很长,可以考虑分行,更好的办法是拆成多 条语句. 使用类时,每个模块中只放一个类. 功能相对独立的程序块之间或 for,if,do,while,switch 等语句前后应加一空行. if,while,for,case,default,do 等语句自占一行. 一行不要写多条语句. 当表达式中有多个运算符时,尽量用括号来明确标出优先级. 这里总结了 11 项指南,实际编程时还有更多的规定.当然这仅是建议,程序员可以根 据自己的需要酌情调整.

  (5)该窗口显示了工程的一个摘要,说明该自动生成的工程都包含哪些文件.单击 OK 按钮就创建了一个简单的控制台应用程序,如图 1-12 所示. 该窗口显示了刚才创建的控制台应用程序.左边的工程管理栏内,ClassView 选项卡显 示了程序的类结构图,FileView 选项卡显示了文件结构图.右边就是要编写程序的地方. (6)选择左边工程管理栏中的 FileView 页,双击 Stdafx.h,打开该文件,如图 1-12 所示. 在右边的代码区内找到 stdio.h,将它修改为 iostream.

  Other Documents 选项卡可以用来创建一些其他类型的文档,这要取决于操作系统都 安装了什么样的软件.例如,如果安装了 Office,这里就会出现 Word,Excel 等文 档. 在右部可以输入要创建的工程名称和存放位置. 一般默认是 create new workspace 选项,如果有旧的工作空间,还可以选择加入到该空间内.

  该输出说明链接时检测到 0 个错误,0 个警告, 生成可执行文件 test.exe. 生成可执行文件后就可以执行该程序.执行一 个 32 位控制台程序即可以从 Windows 的 资源管理 器中双击打开,也可以从命令行手工执行打开.在 Visual Studio 6.0 中,还可以选择 BuilderExecute 命 令,执行该工程,如图 1-13 所示.

  这里给出了一个例程作为参考,读者可以根据自己的需要删减.通常,IDE 都回带有专 门的格式化代码的工具,也有专门的第三方工具可供使用.但是这些都只是对代码的缩进进 行格式化,至于注释还需要自己合理安排和增加.

  技巧:如果希望写出更规范和优美的注释,可以参考开源软件 doxygen 的格式.该软件提

  C是一门应用非常广泛的计算机程序设计语言.它既支持过程化程序设计,也支持面 向对象程序设计.从操作系统,设备控制到数据库,网络,多媒体等众多的应用领域都能看 到它的身影.目前,业界应用比较广泛的是它的两个变种:Borland C和 Visual C.这两 种 C都是在标准 C的基础上做了一些扩展而来.本书将基于 Visual C 6.0 版本的开发 环境,向读者讲授标准 C的强大功能和编程方法.本章包括以下内容: C概述; 开发工具; C程序的结构; 编码规范; 标识符. 通过本章的学习,读者可以为后面的学习打好基础,并且可以对 C有一个基本认识.

  该界面左部由 4 个选项卡组成. Files 选项卡用来创建单个的文件,如头文件,程序文件,资源文件等. Project 选项卡用来创建工程,图中列出的是 Visual C 6.0 所支持的各种类型的工程. Workspaces 选项卡可以创建一个工作空间,一个工作空间可以包含多个工程.如果 编写的软件系统比较庞大,模块众多,就可以利用工作空间来统一管理.

  对象是人们要进行研究的任何事物.面向对象的核心思想是对象和对象间的消息,是建 立在对象基础上的方法学.它将系统看做对象的组合,每个对象都能接受并处理数据, 然后和其他对象通过消息来交换数据.面向对象编程具有以下 3 个基本特征:封装,继 承和多态. 在 C中,用类来封装数据和数据上的操作,外界看不到该类的属性和方法.如果 需要的话,系统一般会为每个属性提供 set/get 函数对. 继承就是从父类继承旧的属性,参数等.C可以进行公有,私有,保护 3 种类型的 继承.有时为了避免内存的浪费,也可以进行虚继承.虚继承中,整个继承体系里 公有的基类将不会被重复分配空间. 多态指用多种形态来实现.C中的多态包括函数重载,子类与基类间的覆盖,虚函 数,运算符重载以及抽象类等方式.

  (2)选择 FileNew 命令,打开 New 对线 所示.该对话框主要用来选择要创 建的工程类型,并选择工程文件的保存位置和工程名称.

  要想发挥 C的强大功能,就需要一个优秀的集成开发环境,因为一个好的编程环境常 常可以起到事半功倍的效果.集成开发环境(IDE)是一个将程序编辑器,编译器,调试工 具和其他建立应用程序的工具集成在一起,用于开发应用程序的软件系统.本节将向读者介 绍常见的几款 C开发环境,并着重介绍本书所用到的开发环境.

  该输出内容表示检测到 0 个错误,0 个警告,生成目标代码 test.obj. (2)对该工程进行链接,以生成可执行文件.选择 BuilderBuild 命令,执行链接操作. 如果输出如下所示,则表示链接正常,生成可执行文件正常.

  上述代码是创建新工程时自动生成的,该代码使用一条 printf 语句输出了字符串 Hello world!.printf 语句是 C 语言中的输出语句,C中的输出语句则使用 cout 流.因此,需要将 代码区中的 printf 语句修改为如下代码:

  但却是 C中重要的头文件.因此也不能被用做自定义的标识符.

  本章主要讲述了 C的一些基本知识,以及编程中需要注意的事项.本书的代码都是在 Visual C 6.0 开发环境下完成的,因此着重讲解了 Visual C 6.0 开发环境及其使用,并给 出了一个简单的例子.另外,本章对于 C程序的基本结构和编码中应该注意的规范也给出 了说明.标识符是编程中必须要用到的,本章也作了一定的说明.第 2 章将着重讲解 C中 基本数据类型的用法.

  (4)在这个窗口可以选择要创建的控制台程序的类型.如果上个窗口选择的工程类型不 同,这里将出现不同的选项.该窗口实际上是选择要使用的模板. An empty project:表示创建一个空工程,该工程不会自动生成程序文件,仅包含环 境配置文件; A simple application:表示创建一个简单程序,仅是一个简单的程序框架,不包含任 何有用的代码; AHello,World!application:表示创建一个有一条输出语句的简单程序; An application that supports MFC:表示是带有 MFC 支持的程序框架.

  代码不仅是写给编译器看的,也是写给其他同事或同行业的人看的.所以在保证程序正 确性的前提性下,一定要注意代码的优雅和整洁.这既显示了程序员良好的素养,也显示了 其优秀的编程风格.对代码的美化主要通过规范严谨的缩进和必要的注释. 【示例 1-4】 寻找 3 个数中最大数的代码.

  练习使用 Visual C 6.0 开发环境,仿照 1.2.4 节的步骤,参照 1.3.1 节上机实现下述程 序,并观察其运行情况. 要求:提示使用者从命令行输入 3 个数,然后按与输入相反的顺序输出. 代码如下所示:

  程序结构是程序的组织结构,指该程序语言特定的语句结构,语法规则和表达方式,其 内容包括代码的组织结构和文件的组织结构两部分.只有严格遵守这种规则,才能编写出高 效,易读的程序.否则写出的代码将晦涩难懂,甚至不能被正确编译运行.

  在这一节将通过一个简单程序向读者讲解 C程序的基本结构,同时也说明 C程序中 输入输出操作的方法,以方便后续章节中的讲解. 【示例 1-1】 实现从命令行读入一个整数,然后加 1 再输出结果.

  当需要注释多条语句时,虽然也可以用多条行注释,但是建议使用块注释. 【示例 1-3】 块注释的使用举例.

  3.第3部分——主要部分 第 3 部分是代码的主要部分,它实现了一个函数,结构如下:

  其中,花括号包含了实现该函数所需的代码.C规定每个可执行程序都有且只能有一 个名为 mian 的函数,它表示了程序的入口点.当 C程序执行时,首先执行该函数,然后 从该函数内调用其他需要的操作.下面依次分析每行代码的功能. 第 1 条代码 int x 表示定义一个对象,并命名为 x.末尾的分号表示这条代码到此 结束. 第 2 条语句使用 cout 流输出一行文字.其中,cout 是一个代表标准输出设备(在这 里指显示器)的对象,它是 C中预定义的系统对象.当程序要向输出设备输出内 容时,就需要在程序中使用该对象.输出的操作符用表示,它表示将操作符 右边的内容输出到操作符左边的对象上.代码中操作符左边的内容用双引号包含起 来,这表示它是一个字符串.因此,代码cout输入整数:;将在标准输出 设备上输出字符串文字输入整数:. 第 3 条语句 cinx 中,cin 是一个代表标准输入设备(一般指键盘)的对象,也是 C中预定义的对象. 当程序需要从输入设备接收输入时, 就需要在程序中使用该对 象.输入的操作符是,它表示将从操作符左边接收的输入放到右边的对象中. 当程序执行到该代码处时,将停止并等待来自标准输入设备的输入.输入完毕后, 按下 Enter 键,cin 接收输入并将输入放到相应的对象中,然后跳到下一条代码开始 执行. 第 4 条语句 x=x1 中,号表示加法运算,既将加号两边的对象相加.=号 表示赋值,它将符号右边的运算结果放到符号左边的对象中.因此,该代码表示将 对象 x 保存的值加 1 再放回 x 中. 第 5 条语句仍然是一条在标准输出设备上输出文字的代码.它包含 3 个输出操作符, 第 1 个操作输入了文字 x=x1.第 2 个操作符输出对象 x 保存的值.第 3 个操作符 的右边是 endl,它表示一个回车换行操作.因此,该代码在输出前两个文字后 就将光标跳到新的一行上去. 第 6 条语句 return 0 是一条跳出程序的代码.它表示从程序跳出并返回到操作系统, 同时带有一个数字 0 作为返回值.

  C语言是由 C 语言扩充而来. 它是一门混合型的语言, 既支持传统的结构化程序设计,

  又支持面向对象的程序设计,这使得 C非常流行.它在编程中支持面向对象.因此,它比 C 更适合人们的思考方式,并且比 C 要安全,可靠,有效.但是它并不像 Java 那样全面实现 类的使用,这使得它很灵活,能够适应多种场合的需要. C是编译语言,性能良好,效率更高.它不像 Java,PHP,ASP 等解释型语言,需要 在运行时转换为机器码,或者读一条语句执行一条.它直接被编译为机器可识别的机器码. C编写的程序独立性好. 只要 C编译时产生的机器码不依赖外部的动态链接库, C 就可以在不需要安装额外程序的情况下, 移动到运行同样操作系统的其他机器和微处理器上. 而移动 Java 程序时需要先安装 Java 运行期库.这是 C语言成功流行的一个重要原因. C语言应用极为广泛.尤其在底层编程和系统级编程上更是 C的传统优势应用.在 数据库和多媒体方面,C又以其卓越的稳定性而赢得了荣誉.

  供了一个内容丰富的风格规范, 其更大的好处是可以用该软件将源代码中符合要求 的注释导出成文当.

  标识符就是为变量,函数,类以及其他用户对象所起的名称.本节主要讲解 C中保留 的标识符以及如何定义用户自己的标识符.

  保留字就是系统已经预定义的标识符,不能再用来定义为其他意义,也被称作关键字. C中常见的保留字主要有表 1-3 所示的几种.

  技巧:每个工程类型都是一种代码的模板.如果预定义的模板不能满足程序员的要求,可

  以选择 Custom AppWizard 定义特定的模板. 3.工具栏 工具栏是一组直观,快捷的图形化按钮和编辑框,熟练使用工具栏可以大大提高工作效 率.Visual C中包含很多种工具栏,默认为图 1-3 所示的工具栏.

  (7)经过上述修改后,还需要修改 test.cpp 文件,该文件是程序的主要实现文件.双击 test.cpp 文件打开它,如下所示.

  经过上述步骤就建立了一个输出字符串 Hello world!的简单控制台应用程序. 要想运行它 还需要进行编译和链接.编译操作负责对源程序进行语法检查,然后生成目标代码.链接操 作负责将目标代码和程序用到的库程序链接成可执行文件.在 Visual Studio 6.0 中,Builder 菜单提供了编译,链接和执行程序的操作.编译和链接的步骤如下所示. (1)选择 BuilderCompile 命令,编译源程序.如果输出窗口内的输出内容如下所示,则 表示没有语法错误,且正确生成了目标代码.

  当程序较小时,用一个文件就可以保存所有代码.但是有实际用途的程序一般都不会太 小.所以,通常会将程序分成几个文件分别保存,再通过包含语句放到一起.这种做法既有 利于模块化开发,也有利于代码的重用. C的程序的文件类型有.h 和.cpp 两种,前者是头文件,后者是代码的实现文件.头文 件中包含了类,函数,常量,全局变量等的声明,使用时用#include 语句在程序的预处理部 分包含进来即可.代码的实现文件是对头文件中声明的类,函数等的具体实现.不需要显示 包含.cpp 文件,当包含了与它对应的.h 文件后,编译器会自动去找同名的.cpp 文件.

  为什么提示标识符非法? 解答:在 1.5.1 节中讲到保留字是系统已经预定义的标识符.因此,不能将用做保留字 的文字再用于别的用途;否则编译将无法通过.例如,不能将 int,struct,sizeof 等再用做其 他的用途,它们只能表示表 1-3 中所规定的意义.表 1-3 列出的只是常见的几种,C中的保 留字比该表要多,有些保留字也很难记. 幸运的是 Visual Studio 6.0 提供了语法着色功能,该功能可以对 C预定义的对象进行 高亮度显示.因此,如果输入一个标识符后,该标识符被高亮度显示,这就说明它是一个保 留字,不能用做其他用途.但是,没有被高亮度显示并不意味着就一定能用做自定义的标识 符.例如,不能将 iostream 用做自定义的标识符.从 1.3.1 节可知,该文字虽然不是保留字,BOB体验官网