
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语言,这种重构复习知识的方法,也许会让你有意想不到的收获。