开发者社区> 华章计算机> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

《C语言编程魔法书:基于C11标准》——导读

简介:
+关注继续查看


image

前  言

为什么要写这本书

本人在2001年上了大学本科,读计算机科学与技术专业。在第一年的上半学期,对计算机编程还没什么感觉。但是就在考“C语言程序设计”这门专业课的前一个月,感觉这门课学了那么久几乎什么都不会,可把我急坏了。然后就在这短短一个月的时间里又是看书,又是上机实验,终于考了70多分,算是过关了……不过奇怪的是在考试结束后,就发现自己对编程有了感情。到了大二,我们上“数据结构”所使用的教材是基于C++编程语言的,因为之前没学过C++语言,所以只能自学。而在这个过程中,我发现自己对编程更加热爱。在上完大三之后,我在暑假里又把之前的C语言重新巩固一番。有了计算机组成、操作系统、汇编语言、数据结构等知识积淀之后再去看C语言编程就感觉容易多了。我也是由此喜欢上了C编程语言。

10年之后,发现国内市面上很多C语言参考书仍然显得非常陈旧。不仅基于古老的C89/90标准,而且还在用Visual C++ 6.0这种既收费又老旧的开发环境教学生。对于比较新的C99标准的讲解屈指可数,更鲜有针对最新的C11标准的书籍。出于对C语言的热爱,在此热切希望能把最新标准的C语言奉献给各位读者,也想把C语言的方方面面讲透并且能讲得通俗易懂,方便读者去思考实践,所以这也是我写这本书的主要原因。当各位阅读完本书之后,会发现C语言竟然如此强大!而且在大部分时候,尤其是我们想集中注意力解决某个特定问题的时候,使用C语言要比用其他一些基于面向对象的类C编程语言(比如C++、Java等)要直观得多!

本书之所以叫“C语言编程魔法书”,是因为像“宝典”、“圣经”之类的词已经被用滥了。再者,C语言本身就拥有极其强大的魔力,你能用它做几乎所有的事情。而且几乎每一个C语言编译器都能内联汇编语言,或者与C++、Objective-C直接兼容,而对于像Java、C#、Python等许多编程语言也有相应的接口。所以,我认为C语言在计算机编程语言领域中就好比数学在自然科学中的地位和作用,它是很多编程语言的基础,而且很多编程语言的编译器或解释器也都是基于C语言来写的。

就在2015年2月,Khronos标准组织发布了最具现代化的图形API——Vulkan,其主机端接口用的API是纯C语言。此外,像OpenGL、OpenCL、OpenAL、OpenVG等开放标准都基于纯C语言。此外,最近10年来TIOBE每月的编程语言排名,C语言排名始终能进前两名,也能说明它的使用范围之广,而且许多开源项目也多多少少会使用C语言来编写。况且学了C语言之后,再学习C++、Java等面向对象编程语言也会轻松很多。尤其像C++和Objective-C,没有C语言基础是完全不行的。所以个人十分推荐计算机系的大学生将C语言作为自己的计算机入门编程语言!

本书特色

从技术层面上讲,本书介绍了C语言的最新标准,即ISO/IEC 9899:2011。同时,也介绍了主流开源C语言编译器GCC与Clang对标准C语言语法的扩充。而且所基于的编译器和开发环境也是比较新的Visual Studio Community 2017、GCC 5,以及Clang 3.8(Apple LLVM 8.0,基于Xcode 8)。

从适合读者阅读和掌握知识的结构安排上讲,本书分为“预备知识篇”、“基础语法篇”、“高级语法篇”,以及“语法扩展篇”,还有最后的“项目实践篇”。从基础到高级,循序渐进地为读者描述C语言编程方法。本书尤其着重C语言标准语法上的精确描述,通过许多代码片段给读者介绍各种C语言语法知识,并且能反映出C语言的灵活性以及在使用上的约束。

本书推崇读者使用合法免费的C语言编译器以及集成开发环境,希望读者能有正确的软件版权意识,这样才能更好地为我国软件事业增添光彩,为打造良好的应用市场以及生态环境作出贡献。因此,本书主要选择使用GCC、Clang这两个主流开源免费的C语言编译器,而集成开发环境(IDE)则采用Visual Studio Community、Eclipse、Xcode这三个常用的免费开发工具,其中,Visual Studio Community不是开源的,而Xcode则是部分开源的。

本书虽然会讲解整个C编程语言,涉及了几乎所有的语法点,但是考虑到本书读者可能是初学C语言,且没有多少计算机专业知识,所以本书措辞会尽量通俗,而不过于追求学术化。某些描述可能会不太严谨,但对于本书所用到的GCC、Clang这两大主流编译器而言将完全适用。另外,考虑到不少读者从事嵌入式系统开发工作,所以对于C语言标准中出现的所谓“由实现定义的”场合会尽量区分情况分别阐明。本书的最终的目的就是让读者至少能熟练掌握C语言编程,能将它灵活地运用于实际工程中。

目  录

[第一篇 预备知识篇
第1章 C魔法概览
1.1 例说编程语言 ](https://yq.aliyun.com/articles/117984/)
1.2 用C语言编程的基本注意事项
1.3 主流C语言编译器介绍
1.4 关于GNU规范的语法扩展
1.5 用C语言构建一个可执行程序的流程
1.6 本章小结
[第2章 学习C语言的预备知识
2.1 计算机体系结构简介 ](https://yq.aliyun.com/articles/118004/)
2.1.1 贮存器
2.1.2 存储器
2.1.3 寄存器
2.1.4 计算单元
2.1.5 程序执行流程
2.2 整数在计算机中的表示
2.2.1 原码表示法
2.2.2 补码表示法
2.2.3 八进制数与十六进制数
2.3 浮点数在计算机中的表示
2.4 地址与字节对齐
2.5 字符编码
2.6 大端与小端
2.7 按位逻辑运算
2.8 移位操作
2.8.1 算术左移与逻辑左移
2.8.2 逻辑右移
2.8.3 算术右移
2.8.4 循环右移
2.9 本章小结
[第3章 C语言编程的环境搭建
3.1 Windows操作系统下搭建C语言编程环境 ](https://yq.aliyun.com/articles/118080/)
3.1.1 安装Visual Studio Community 2017
3.1.2 安装MinGW编译器
3.1.3 安装LLVM Clang编译器
3.2 macOS系统下搭建C语言编程环境
3.3 本章小结

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
《C语言编程初学者指南》一2.12 编程挑战
本节书摘来自华章出版社《C语言编程初学者指南》一书中的第2章,第2.12节,作者【美】Keith Davenport(达文波特) , M1ichael Vine(维恩),更多章节内容可以访问云栖社区“异步社区”公众号查看 2.12 编程挑战 1.假设a=5、b=1、x=10且y=5,编写一个程序,使用一个单个的printf()函数输出表达式f = (a – b)(x – y)的结果。
1489 0
《C语言编程初学者指南》一1.10 编程挑战
本节书摘来自华章出版社《C语言编程初学者指南》一书中的第1章,第1.10节,作者【美】Keith Davenport(达文波特) , M1ichael Vine(维恩),更多章节内容可以访问云栖社区“异步社区”公众号查看 1.10 编程挑战 1.学习附录B中的Vim快速指南。
1343 0
《C语言及程序设计》程序阅读——条件编译
返回:贺老师课程教学链接 请写出下面程序的运行结果或说明其功能,通过运行程序进行对照 (1) #include <stdio.h> #define DEBUG int main() { #ifdef DEBUG printf("Debugging\n"); #else printf("Not debugging\n"); #endif
1042 0
《C语言及程序设计》实践参考——分支嵌套流程图-五等级成绩
返回:贺老师课程教学链接  项目要求 【分支嵌套流程图2-五级成绩】画流程图,输入学生的百分制成绩s,根据其值,输出其等级成绩。90分以上为优秀,80分以上为良好,70分以上为中等,60分以为及格,不足60分为不及格。 参考解答:
1245 0
《C语言及程序设计》实践参考——分支嵌套流程图-三等级成绩
返回:贺老师课程教学链接  项目要求 【分支嵌套流程图1-三级成绩】画流程图,输入学生的百分制成绩s,根据其值,输出其等级成绩。90分以上为优秀,60分以上为合格,不足60分为不合格。 参考解答:
1430 0
《C语言及程序设计》实践参考——双分支结构流程图-大值
返回:贺老师课程教学链接  项目要求 【双分支结构流程图-大值】问题:画流程图,输入两个整数a和b,输出其中的大值。提示:采用双分支结构,输入a、b后,将大值赋值给另外一个变量,最后输出结果。 参考解答:
1213 0
《C语言及程序设计》实践参考——单分支结构流程图-大值
返回:贺老师课程教学链接  项目要求 【单分支结构流程图-大值】问题:画流程图,输入两个整数a和b,输出其中的大值。提示:当a<b时,交换a和b,最后输出的a一定是其中的大值。流程图中可以直接给出交换a和b的具体算法,也可以用文字“交换a和b”说明。流程图是面向人的设计语言,人能看明白即可。 参考解答:
1107 0
《C语言及程序设计》实践项目——利用switch语句解决问题
返回:贺老师课程教学链接  【项目1:投票表决器】设计一个投票表决器,其功能是: 输入Y、y,打印agree 输入N、n,打印disagree 输入其他,打印lose 请在下面代码的基础上,将程序补充完整#include &lt;stdio.h&gt; int main( ) { char c; scanf("%c",&amp;c); ____(1)____
1621 0
《C语言及程序设计》程序阅读——用switch语句实现多分支结构
返回:贺老师课程教学链接  阅读下面的程序,写出运行结果,并与在计算机上的运行结果进行对照、反思。(1) #include <stdio.h> int main( ) { int i=10,j,m=0,n=0; j=i%3; switch (j) { case 0: m++; break; case
1092 0
《C语言及程序设计》实践项目——if语句的嵌套
返回:贺老师课程教学链接  【项目1:分段函数求值】从键盘输入x的值(要求为实型),根据公式1计算并输出x和y的值。 [参考解答]【项目2:油量监控】设计一个程序,用于赛车油量的监控。该程序在赛车油量偏低(少于1/4,即0.25)时,警示车手应该注意;在油箱接近满载(不低于3/4)时,提示提手不要停车。而对于其他情况下,不提示任何信息,以免车手分心。请设计出这个程序来,输入油量刻度(0-1之
1330 0
文章
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
视觉计算机开发者系列手册
立即下载
软件开发之禅
立即下载
《云网络概念手册》
立即下载