前言

随着互联网的发展,人类生活方式中的重要部分,包括衣、食、住、行、教育、娱乐甚至医疗等都在线上得以应用,这一切的便利离不开互联网的发展,也与形形色色的应用软件密不可分。开发应用软件需要使用编程语言,作为最古老的编程语言之一,C语言因具有简洁、紧凑、高效灵活、可直接访问硬件、可移植等特性,而被应用于程序开发的众多领域。

为什么要学习本书

C语言是众多院校计算机专业学习的第一门编程语言;为了一窥程序的编写原理,了解互联网时代发展的基础,许多工科专业也将C语言作为学生的必修课程。作为一本入门教程,本书站在初学者的角度,先对C语言的基础知识进行了详细的讲解,将复杂问题简单化,之后以代码形式实践基础知识,最后结合讲解对代码进行分析,真正做到了由浅入深、由易到难。

本书是《C语言开发入门教程》的全新改版。本次改版吸取了广大读者4年来的真实反馈,与第1版教程相比,本书具有以下亮点。

1. 采用更加便捷、小巧的开发工具Dev-C++作为教学环境,降低下载、安装和使用工具的难度。

2. 对原书中的代码进行精简,并添加了大量进阶案例,既能保证读者充分理解、吸收所讲内容,又能帮助读者巩固所学知识、提高编程能力。

3. 语言描述更加精炼、合乎逻辑,通俗易懂;内容安排更加合理,体系结构更加完善。

如何使用本书

本书是一本C语言入门书,内容包含12章,其中第1~10章介绍C语言基础语法,第11章介绍数据结构,第12章为综合项目,具体介绍如下。

第1章首先简单介绍了计算机语言、算法等与程序设计相关的知识,其次介绍了C语言的发展史、标准和应用领域,之后介绍了几种C语言开发工具,讲解了Dev-C++的安装流程,并结合案例展示了该工具的基础用法与C语言的编写流程,最后讲解了编译过程。通过本章的学习,读者会对计算机语言、程序设计、算法、C语言等概念有所了解,并能自主安装Dev-C++工具,熟悉程序的编写流程,了解程序的编译过程。

第2章主要讲解C语言中的数据类型与运算符。其中数据类型包括基本数据类型、构造类型、指针类型;运算符包括算术运算符、关系运算符、逻辑运算符、赋值运算符、条件运算符、位运算符和sizeof运算符。除此之外,本章还介绍了与数据类型相关的关键字、标识符、常量、变量,以及类型转换和运算符优先级等知识。通过本章的学习,读者可以掌握C语言中数据类型及其运算的相关知识。熟练掌握本章的内容,可以为后面的学习打下坚实的基础。

第3章首先讲解程序的运行流程图,然后讲解C语言中最基本的3种流程控制语句,包括顺序结构语句、选择结构语句和循环语句,之后介绍了循环嵌套和跳转语句。通过本章的学习,读者能够熟练地运用if判断语句、switch判断语句、while循环语句、do…while循环语句及for循环语句。

第4章首先讲解什么是数组,其次讲解一维数组的定义、初始化、引用,以及数组的常见操作,之后讲解二维数组的相关知识,最后简单介绍多维数组的定义方式。掌握好本章的内容有助于后面课程的学习。

第5章主要讲解C语言中的函数,包括函数的定义和声明、函数的调用;其次介绍局部变量、全局变量及变量的作用域等知识。通过本章的学习,读者能掌握模块化思想,熟练封装功能代码,并以函数名实参列表的形式进行调用,从而简化代码,提高代码的可读性。

第6章首先讲解指针的概念与指针的运算,然后讲解指针与数组、指针与函数、指针数组的相关知识,最后讲解了二级指针、指针与const的相关知识。通过本章的学习,读者能掌握指针的定义与使用方法,学会使用指针优化代码,提高代码的灵活性。

第7章首先讲解C语言中字符数组、字符串的概念,以及字符串与指针的关系,然后讲解字符串的输入/输出,之后讲解字符串常用的操作函数,最后讲解数字与字符串之间的转换。通过本章的学习,读者能熟练掌握字符串的常用操作。

第8章首先介绍构造类型中的结构体类型,包括结构体类型的声明、定义、初始化、访问、大小等知识,其次介绍结构体数组、结构体与指针、结构体与函数等进阶内容,之后介绍typedef关键字的应用,最后通过阶段案例帮助读者巩固本章内容。通过本章的学习,读者可以掌握结构体的存储结构,并能熟练应用结构体。

第9章主要讲解预处理与断言。常用的预处理方式有3种,分别是宏定义、文件包含和条件编译。其中,宏定义是最常用的一种预处理方式,文件包含对于程序功能的扩充很有帮助;条件编译可以优化程序代码。断言用于检测假设的条件是否成立,对程序调试非常有帮助。熟练掌握程序预处理方式和断言,对于以后的程序设计工作至关重要。

第10章首先讲解文件的基本概念,包括流、文件、文件指针与文件位置指针;然后讲解文件的基本操作,包括文件的打开与关闭、单字符读写文件、单行读写文件、二进制形式读写文件;之后讲解文件的随机读写;最后通过一个案例来加深读者对文件读写的理解。通过本章的学习,读者将学会对文件进行读写操作,从而站在更高的层面来理解和使用文件。

第11章主要讲解C语言中的3种数据结构,分别是链表、栈和队列。通过本章的学习,读者能够掌握这3种数据结构的存储原理、定义及常用操作,并熟练运用这些数据结构优化程序中的数据存储,提高程序的运行效率。

第12章运用前面各章所讲知识实现一个综合项目,并分别介绍项目研发过程中的需求分析、模块设计、代码实现、代码调试等环节,不仅帮助读者温习所学知识,更能引领读者了解程序开发流程,巩固程序设计思想。

在学习的过程中,读者应勤思考、勤总结,并自主实践书中提供的案例。

读者若不能完全理解书中所讲知识,可登录博学谷平台,配合平台中的教学视频进行学习。此外读者在学习的过程中,务必要勤于练习,确保真正掌握所学知识。在学习过程中,读者如果遇到困难,不要纠结,继续往后学习,或许会豁然开朗。

致谢

本书的编写和整理工作由传智播客公司完成,主要参与人员有吕春林、高美云、薛蒙蒙、郑瑶瑶、李卓等,全体人员在近一年的编写过程中付出了辛勤的汗水,在此一并表示衷心的感谢。

意见反馈

尽管我们付出了很大的努力,但书中难免会有不妥之处,欢迎读者来信给予宝贵意见,我们将不胜感激。电子邮件:itcast_book@vip.sina.com。

黑马程序员

2018年11月于北京