新書推薦:
《
看见不同
》
售價:HK$
67.9
《
以毒为药:古代中国的医疗、文化与政治
》
售價:HK$
90.9
《
你我皆是当事人2(韩国热播电视剧《非常律师禹英禑》取材原著)
》
售價:HK$
51.8
《
数字化供应链:技术赋能与产业应用
》
售價:HK$
90.9
《
通官绅之邮:江苏地方精英的角色(1905—1914)
》
售價:HK$
101.2
《
埃隆·马斯克品牌管理手册
》
售價:HK$
67.9
《
史家讲史:三国史新论
》
售價:HK$
66.7
《
资本运作II:高增长企业的操盘逻辑
》
售價:HK$
90.9
內容簡介:
本书帮助零基础编程读者从入门到精通地学习并掌握计算机编程C ,循序渐进引导读者学习C 的基础内容和高阶核心知识,增加读者实战操作经验和分析解决问题的能力,引导读者能够深入挖掘计算机编程领域,多维度思考和理解计算机网络的应用,有助于读者能够全面地、系统地将所学编程知识技巧运用于实际工作中,在高新企业、移动互联网、大数据和云计算领域中发挥强有力的重要作用。
關於作者:
零壹快学是一个集教育、培训、交流于一体的计算机学习融媒体平台,覆盖Web、APP和微信小程序等场景,为广大IT学习者提供计算机各学科的教学资源、培训课程、测评系统等。通过人工智能手段,模拟真实课堂环境,力求打造成为一个全面、权威、高效的一流计算机在线教育平台。目前,平台已开发了包括计算机编程、云计算、区块链等在内的多门课程,提供计算机等级考试在线题库系统,将陆续开发计算机技术与软件专业技术资格(水平)考试、CCIE等在线题库系统,同时拥有一支由一线互联网公司工程师、知名高校教师组成的专家团队,精心为广大IT学习者提供优质的学习资源、课程和服务。
目錄 :
第1 章 走进C … …………………… 1
1.1 C 编程语言概述…………………… 1
1.1.1 C 的历史… ……………………… 1
1.1.2 C 的发展历程… ………………… 2
1.1.3 C 的特性与使用场景… ………… 3
1.1.4 C 与C 语言……………………… 3
1.2 个C 程序……………………… 4
1.2.1 Hello, World!… …………………… 4
1.2.2 包含头文件………………………… 4
1.2.3 main 函数…………………………… 5
1.2.4 打印字符串………………………… 5
1.3 小结…………………………………… 6
1.4 知识拓展……………………………… 6
1.4.1 C 开发社区… …………………… 6
1.4.2 学习建议与资源…………………… 6
第2 章 搭建C 开发环境… ………… 7
2.1 下载并安装Visual Studio 2017… … 7
2.1.1 下载Visual Studio 2017… ………… 7
2.1.2 安装与配置Visual Studio 2017… … 9
2.2 编译运行个程序………………… 12
2.3 调试…………………………………… 17
2.4 小结…………………………………… 18
2.5 知识拓展……………………………… 19
2.5.1 设置系统路径……………………… 19
2.5.2 其他C IDE 简介………………… 20
第3 章 C 基础语法… …………… 22
3.1 基本内置类型………………………… 22
3.1.1 整型………………………………… 23
3.1.2 字符型……………………………… 27
3.1.3 浮点型……………………………… 31
3.1.4 布尔型……………………………… 32
3.2 常量与变量…………………………… 33
3.2.1 字面值常量………………………… 33
3.2.2 变量………………………………… 37
3.2.3 变量初始化………………………… 40
3.2.4 const 常量…………………………… 41
3.2.5 typedef… …………………………… 42
3.3 操作符………………………………… 43
3.3.1 算术操作符………………………… 44
3.3.2 关系操作符………………………… 45
3.3.3 逻辑操作符………………………… 47
3.3.4 位操作符…………………………… 49
3.3.5 自增自减操作符…………………… 51
3.3.6 赋值操作符………………………… 52
3.3.7 条件操作符………………………… 54
3.3.8 逗号操作符………………………… 56
3.3.9 操作符优先级……………………… 57
3.4 类型转换……………………………… 60
3.4.1 隐式转换…………………………… 60
3.4.2 显式转换…………………………… 63
3.5 注释…………………………………… 64
3.5.1 单行注释…………………………… 64
3.5.2 成对注释…………………………… 65
3.6 头文件与预处理器简介……………… 66
3.6.1 头文件与链接……………………… 66
3.6.2 宏…………………………………… 70
3.6.3 条件编译…………………………… 73
3.7 小结…………………………………… 76
3.8 知识拓展……………………………… 77
3.8.1 二进制复习………………………… 77
3.8.2 ## 和#……………………………… 78
第4 章 流程控制与语言结构……… 80
4.1 简单语句……………………………… 80
4.1.1 空语句……………………………… 80
4.1.2 作用域和块………………………… 82
4.1.3 简单语句与复合语句……………… 84
4.2 条件控制语句………………………… 85
4.2.1 if 语句… …………………………… 85
4.2.2 switch 语句… ……………………… 90
4.3 循环控制语句………………………… 96
4.3.1 while 语句… ……………………… 97
4.3.2 do...while 语句……………………… 97
4.3.3 for 语句……………………………… 99
4.4 跳转语句…………………………… 102
4.4.1 break 语句… …………………… 102
4.4.2 continue 语句… ………………… 104
4.4.3 goto 语句… ……………………… 105
4.5 小结………………………………… 106
4.6 知识拓展…………………………… 107
4.6.1 死循环…………………………… 107
4.6.2 复合语句的作用域……………… 108
4.6.3 多文件的作用域问题…………… 109
第5 章 vector 与字符串… ………… 110
5.1 vector… …………………………… 110
5.1.1 vector 的创建和初始化… ……… 110
5.1.2 vector 的遍历… ………………… 111
5.1.3 vector 的其他操作… …………… 112
5.2 string 字符串… …………………… 115
5.2.1 string 的创建和初始化… ……… 115
5.2.2 string 的读写… ………………… 116
5.2.3 string 的基本操作… …………… 118
5.2.4 string 的比较… ………………… 120
5.2.5 string 的连接… ………………… 121
5.3 小结………………………………… 122
5.4 知识拓展…………………………… 122
第6 章 数组与指针………………… 126
6.1 数组………………………………… 126
6.1.1 数组的创建和初始化…………… 126
6.1.2 数组的操作……………………… 128
6.2 指针………………………………… 130
6.2.1 使用指针遍历数组……………… 130
6.2.2 指针的概念与理解……………… 130
6.2.3 指针的创建与初始化…………… 132
6.2.4 指针的基本操作………………… 133
6.2.5 指针的算术操作………………… 135
6.2.6 const 指针………………………… 137
6.2.7 指针的数组和数组的指针……… 138
6.2.8 指针的指针……………………… 141
6.2.9 const_cast 与reinterpret_cast… … 142
6.3 动态数组…………………………… 143
6.3.1 使用malloc() 和free() 动态分配内存
………………………………… 143
6.3.2 使用new 和delete 动态分配内存
………………………………… 145
6.4 多维数组…………………………… 146
6.4.1 多维数组的创建与初始化……… 146
6.4.2 多维数组的遍历………………… 147
6.4.3 多维数组与数组………………… 148
6.5 引用………………………………… 150
6.5.1 引用的使用……………………… 150
內容試閱 :
第1 章 走进C C 编程语言概述
在现今的社会,软件的应用已经渗透到生活的方方面面之中。我们经常使用的在线服务如打车、交友、聊天、办公、学习和游戏等,都是通过各种各样的编程语言开发完成的。
如今每一种被广泛使用的编程语言,都在某一些场景下有着不可替代的长处和突出的优势。比如,C语言在性能方面非常好,R语言适合用于统计分析大量的数据,而HTML和JavaScript语言在浏览器场景中有不可比拟的优势。在众多编程语言中,C 是一种非常灵活强大的编程语言,被广泛应用于所有需要极限优化效率的程序中。学习C 是一件非常有挑战性的事,但同时也是一件很有成就感的事。通过本书,我们将带你了解C 语言的细节,并加深对计算机系统的理解。
现在,本章将带你走进C 编程语言,体会不一样的编程世界。
1.1.1 C 的历史
C 的前身是“C with classes”,由“C 之父”比雅尼·斯特劳斯特鲁普(Bjarne Stroustrup)研发创造。1979年,比雅尼·斯特劳斯特鲁普在准备博士论文的时候使用了Simula语言,其支持面向对象开发。他觉得这种思想非常适合大型应用软件的开发,但是Simula本身的效率太低。之后,斯特劳斯特鲁普就开始研发“C with classes”了。这个命名说明了它是在C语言的基础上研发的,包含了C语言的特性。C语言的执行速度快、效率高,而且可移植性也非常好,因此在C语言的基础上加上类和继承等面向对象的特性之后,将发明出一种新的、效率高且能开发大型软件的强大语言。
“C with classes”的个编译器叫作Cfront,它的工作原理是把“C with classes”的代码转换成纯C语言的代码。Cfront的代码大多是用“C with classes”编写的,因为难以集成C 的异常处理机制,所以Cfront在1993年就退出了历史舞台,但Cfront对之后的C 编译器和UNIX都产生了深远的影响。
【提示】
计算机运行程序时使用的指令是编码过的抽象的二进制序列,而程序员在开发过程中需要一种方便人们理解的高级编程语言,而C 就是这样一种高级语言。将高级编程语言翻译成计算机指令的工具就叫作编译器。不同的编译器支持不同的开发平台,也会对高级编程语言进行不同的优化而生成不同的机器指令。
1983年,“C with classes”改名为“C ”,许多新特性被加入其中,如虚函数、函数重载、const等。1985年,《C 程序设计语言》(The C Programming Language)第1版出版,由于没有正式的C 标准,这本书成了当时的重要参考。在此期间,C 又增添了许多功能。1998年,C 编程语言的个国际标准——C 98标准正式发布,并且将标准模板库STL收录其中。2011年,C 11标准问世,该版本添加了许多新功能,简化了许多语法,使C 语言的功能更加强大了。
1.1.2 C 的发展历程
本节将简述C 编程语言这几十年的发展历程,感兴趣的读者可以通过拓展资料来了解,本书不详细展开。
1979年,比雅尼·斯特劳斯特鲁普首次实现C with Classes,在C语言的基础上添加了类(构造函数与析构函数、成员函数、公有私有访问控制、友元)、派生类、内联函数、默认实参等功能。
1982年,C with Classes参考手册发布。
1984年,C84实现,发布参考手册。
1985年,Cfront 1.0发布,增加虚函数、重载、引用、const关键字、new和delete操作符、作用域操作符等特性。
同年,《C 程序设计语言》第1版出版。
1986年,“whatis?”提案把设计目标写入文档,包含了多重继承、异常处理和模板。
1987年,GCC 1.15.3支持C (g )。
1989年,Cfront 2.0发布,增加多重继承、保护访问控制、抽象类等特性。
1990年,ANSI C 委员会成立。
同年,《C 注解参考手册》(The Annotated C Reference Manual)出版。
同年,添加命名空间、模板、异常处理等功能。
1991年,Cfront 3.0发布。
同年,ISO C 委员会成立。
同年,《C 程序设计语言》第2版出版。
1992年,STL在C 中实现。
1997年,《C 程序设计语言》第3版出版。
1998年,C 98标准发布,增加转换运算符、mutable关键字、RTTI、bool类型等特性。
1999年,委员会成员成立Boost,旨在开发新的高质量库以作为标准库的候选库。
2003年,C 03标准发布,添加了新特性——值初始化。
2007年,扩展库TR1发布,将来自Boost以及C99的一些内容添加到C 标准库中。
2010年,扩展C 标准库,添加了一些特殊数学函数。
2011年,C 11标准发布,添加了大量新特性,包括auto和decltype、右值引用、列表初始化、long long类型、lambda表达式、区间遍历等。
同年,十进制浮点数TR发布。
2012年,标准C 基金会成立。
2013年,《C 程序设计语言》第4版出版。
2014年,C 14标准发布,添加了变量模板、泛型lambda、二进制字面量等特性。
2017年,C 17标准发布,添加了折叠表达式、inline变量、条件语句的初始化器等特性。
1.1.3 C 的特性与使用场景
C 与现在主流的面向对象编程语言有比较大的区别,有一部分原因是C 继承了C语言的绝大部分功能,所以它也能像C语言那样直接使用指针操纵内存,直接与底层交互,也可以知道数据的大小并进行优化;而更新的语言如Java、C#等都建立在类似虚拟机的中间层之上,因此程序员可以进行的优化十分有限。除此之外,C 也支持类、虚函数、继承等能实现面向对象编程的功能,而且还包含模板等支持泛型编程的功能。
对于使用场景来说,随着Web应用以及移动端应用的兴起,尽管已经有越来越多基于其他语言的框架由于易用性等特点取代了基于C 的框架,但是 C 作为一种可以接触底层的高效语言,在许多性能敏感的场景中还是无法替代的。这其中包括了游戏编程、音频视频图像处理,以及所有靠近操作系统层的底层系统应用和基础设施。但由于C 实在太灵活了,存在许多导致程序出错的陷阱,致使开发调试成本上升,因此一般的应用程序和工具脚本就没有使用C 的必要了。
1.1.4 C 与C语言
C 是在C语言的基础上发展而来的,因此C 几乎支持C语言的所有功能。也可以说,C语言就是C 的一个子集。C 不但不需要花费许多时间去重新定义一些如函数及变量之类的基本程序语言功能,而且大量C程序也无须修改就可以被C 的编译器编译,可以说C 是向前兼容了C语言。
但是,C 与C语言的编程思想并不一样。C语言没有类和面向对象的概念,我们所能做的就只有过程式编程,将指令和数据组织成一块一块的子过程,也就是函数;而C 在C语言的基础上增加了类、模板等功能,编程的思想和范式也不一样了。在使用C 进行程序设计的时候,我们不考虑如何把算法和功能组织成函数,而是考虑如何将程序中的物件抽象为类,并且定义类之间的关系和互动。此外,C 可以通过模板实现泛型编程,也就是说,在编程的时候我们不需要考虑函数参数或者容器元素的类型。