第3课C语言,源代码,编译器(1) -2011.10.11

编程思想,从语句的格式语法中抽离。介绍了loop、逻辑表达式,数组,这些抽象概念以及C语句的范例。介绍源代码、编译器,gcc -ohello hello.c, make hello,gcc -o hello hello.c-lcs50(加载libary)。介绍了函数。

CS50建立的一台服务器,每个人都可以在上面注册名字,通过ssh登录,这个也称为云,云倒是一个万能的名词。

和之前的公开课一样,非常重视注释,在程序的开始,注释说明程序的内容,作者等信息。

介绍primitive类型,float、int、char、bool之类等等。字符'\r',回到最左边,所以有时我们看到换行是"\r\n",而Mac只是"\r"。

第4课C语言,源代码,编译器(2) -2011.10.19

gcc后面的参数-ggdb是调测用,我还是喜欢用printf来解决,并用-DDEBUGX之类的来定义是否要设定宏定义,将调测的语句都防止在#ifdefDEBUGX后面。貌似还未使用高级调测方式。

sizeof用于检测数据所占存储空间。long在linux中(至少在某些机器中)仍然为4,与int等同,可以使用longlong的类型,长度为8。这些长度和机器以及系统有关。

介绍了整型除法的问题和解决方式。

介绍if(){}else{}的用法,逻辑判断,switch语句、for语句、while语句,do{}while()语句。Linux中的man用法。其实我喜欢vi,也很喜欢用命令的方式来编译和运行。

第5课函数,全局变量,参数,返回值(1) -2011.10.20

Typecasting类型变换,要注意溢出问题。对于float运算,由于存储位置有限,32bit或者64bit,会存在精度问题,对于浮点大小比较需要注意,例如0.81+0.03== 0.84不一定成立。

介绍了循环嵌套。int main(int argc ,char ** argv ){}或者参数的含义。运算溢出的处理。

第6课函数,全局变量,参数,返回值(2) -2011.10.24

讲述了一些入门者需要注意的语法书写方式。接着介绍函数,讲述内存的分配方式。内存从上至下为Heap,用于分配给全局变量,包括静态和动态,从下至上为stack,用于分配local变量和函数。通过intmain(int argc, char * argv[])引入命令行操作,数组的概念。