C/C++实践进阶之道:写给程序员看的编程书
上QQ阅读APP看书,第一时间看更新

1-3 掌握C语言核心,逐步扩张

最近有重新阅读《C++程序设计语言》和《C++语言的设计和演化》,有两个感觉:一方面,相对于C++来说,C语言简单容易;另一方面,C语言又有很多缺陷、陷阱,比如:const int *i;和int const *i;意思一样吗?int *ptr[3]是定义指向数组的指针,还是指针数组?……有时候要想一下才能明白,有时候还得上机测试才能搞清楚,而且还经常担心不同的系统是不是会有不同的解释。

对于C语言的学习来说,恐怕要采取这样的态度:首先学习“Core C”,了解语言的概貌,基础知识,基本类型,基本表达式和简单运算方法,三种结构,简单数组,函数,指针和文件,实例应该比较简单,没有什么特别的技巧,代码简单易读,更多地把C看成是一种通用语言(或者说学习程序语言通用之处),就是其他语言也会有这些特色来学习,打下良好基础,将来学习C++、Java或者C#就更轻松。然后结合更多的编程实践,学习C语言中更多的精妙之处,比如宏定义,函数指针,字符串函数,指针高级用法等。

我想这样的教学思路,既方便读者快速掌握C最常用、最核心的部分,不侧重于细节。又能在实践编程中逐步提高,不但可以读懂别人编写的晦涩的C代码,又能在程序设计需要的时候使用合适的技巧。

不要光说不练,如果由我来编写一本“C语言程序设计”的图书,我会如何呢?我想了一下,大致的结构应如下:

注:目录中标*的是提高部分,往往是C语言独有的特色,可以不讲,或者作为阅读和练习使用。

虽然本书的定位是进阶提升,而不是基础入门;但是我觉得下面这个目录仍有存在意义,它可以帮助读者用较快的速度和精炼的框架来梳理C语言的基础知识,为后面的提升学习打下基础。

第一讲:C语言的特色:

1.1:概述

1.2:Hello World:讲述程序基本结构和基本编写方法

1.3:更进一步的Hello World:明白函数是C程序的基本架构

1.4:有变量定义的Hello World:更进一步地了解C语言的概貌和调试错误

1.5:算法和程序

1.6:本讲小结

第二讲:C语言的基础知识

2.1:数字在程序中的表示

2.2:整形变量

2.3:其他基本数据类型

2.4:保留字和关键字

2.5:运算符和表达式

2.6:本讲小结

第三讲:顺序和选择结构

3.1:程序设计的三种结构

3.2:if...do...

3.3:if...else...

3.4:switch...

3.5:选择结构的嵌套

*3.6:if...else...你可能会错:顺带说明程序写作结构的重要性

3.7:本讲小结

第四讲:让程序循环

4.1:当程序需要循环的时候

4.2:while...

4.3:do...

4.4:for...

*4.5:C++对for语句的改变

*4.6:break...continue...你可能会错

4.7:本讲小结

第五讲:函数

5.1:结构化程序设计概述

5.2:函数的作用和定义

5.3:在主程序中调用函数

5.4:函数中调用函数

5.5:程序中变量生命期:全局变量和局部变量

*5.6:函数改变程序结构:高内聚,低耦合

5.7:本讲小结

第六讲:简单数组

6.1:定义和使用数组:数组的概念和意义必须明了

*6.2:小心:从0开始,不检查边界

6.3:int a[3]好,还是int m,n,i好

6.4:抱歉:数组不能作为函数参数和返回值

*6.5:不推荐使用的多维数组

6.6:本讲小结

第七讲:指针

7.1:数据在内存中的存储方式

7.2:通过地址找到人:指针的定义和使用

7.3:通过指针访问数据

7.4:利用指针传递参数:by value和by address

7.5:小心操纵指针

7.6:本讲小结

第八讲:字符串处理

8.1:字符数组和字符串

8.2:string.h

8.3:scanf()

8.4:综合示例

8.5:本讲小结

第九讲:结构体与联合体

9.1:综合描述一个对象的属性

9.2:采用struct定义(typedef)

9.3:访问struct中的成员

9.4:指向结构体的指针作为函数参数

*9.5:结构体中的指向自己的指针

*9.6:联合体

9.7:本讲小结

第十讲:基本宏定义

10.1:#define

10.2:函数的作用和定义

10.3:在主程序中调用函数

10.4:函数中调用函数

10.5:程序中变量生命期:全局变量和局部变量

*10.6:函数改变程序结构:高内聚,低耦合

10.7:本讲小结

第十一讲:文件

11.1文件概述

11.2以C的眼光看文件

11.3文件的打开和关闭

11.4文件的顺序读写

11.5文件的定位与随机读写

11.6文件状态检查函数

11.7本讲小结

第十二讲:综合

12.1:头文件

12.2:project

12.3:把一个大程序分成几块

12.4:分别编译和链接

12.5:本讲小结

*第十三讲:const的关键用法

第十四讲:函数指针

第十五讲:声明,定义和typedef(sizeof这里讲)

第十六讲:前后台程序设计

16.1:中断的意思

16.2:前后台程序的设计模式

16.3:示例

16.4:数据丢失与实时性

16.5:程序的改进和适用范围

16.6:本讲小结

注意:请用上面的目录去复习理解C语言,这种重构复习知识的方法,也许会让你有意想不到的收获。