首页 > 代码库 > 第一节课大纲
第一节课大纲
1、推荐书,浪潮之巅,暗时间
如果认真去学,我相信每个人都可以把计算机专业课学好,问题是愿不愿意认真去学,我们伟大的毛主席说过:任何事就怕认真二字。有些同学说我不愿意学,我觉得我不适合学计算机,我不喜欢计算机,那你适合做什么那喜欢做什么那,不知道。但是现实是无论你喜不喜欢,毕业的时候大部分同学的工作还是在计算机这个行业内,为什么?因为你不会别的,可能计算机专业你也不会,但是至少你有个计算机专业毕业证书,这个证书暗示着你会,那么这个证书只能让你找到计算机行业的工作,你不可能拿着这个证书去医院当医生去。【或者无论说喜不喜欢一件东西,都应该建立在了解这件事情的基础上】
或者说你不喜欢学习计算机,你对计算机了解又有多少那?可能只是道听途说的一些只言片语。那么如何对计算机或者对我们将来从事的这个行业进行一个充分的了解,答案只有一个,读书!这里给大家介绍的两本书的作者都是在计算机行业内的大家,并且知识非常渊博,通过这两本书我们可以了解到我们整个行业的历史,可以了解到苹果、谷歌、摩托罗拉,IBM、诺基亚等等这些大公司的起起伏伏,每个公司都辉煌过,那么为什么有些公司没落了,有些公司却迎来了新的转机。也可以了解到如果我们想进入这些大公司,我们应该具备什么样的能力,在我们听说的google,微软,百度等IT大公司里那么多程序员,有些年薪上百万有些只是几万,在这些书里你可以了解到你需要具备什么样的能力才能拿到上百万。
暗时间的书写过程也很值得大家借鉴,作者从大概大学二年级的时候开始写博客,有关于计算机的、数学的、思考方法,学习方法等等。每个月1篇,坚持了8年,后来这些博客集结成这本畅销书暗时间。
当然这些书里肯定不止我说的这些,大家看了就会知道。当然在看的时候会有很多专业术语可能理解不到位,没关系,毕竟我们才大一,找自己感兴趣的去读就好。另外建议大家去看这两本书作者的微博,知乎,豆瓣等等,顺藤摸瓜你就会发现很多计算机行业的非常有意思的好书,比如说文明之光,构建之法,编程之美,黑客与画画等等。为什么推荐大家去读这些书而不是强调大家一定要好好学习,主要是动机,你有动机了你愿意学了,你就会有进步,你不愿意学我讲的天花乱坠也没什么用。就像构建之法上说的,老师和学生的关系应该是健身教练和健身学员的关系。
2、介绍为何选择C
http://www.cnblogs.com/c-programing-language/p/6400782.html
《C程序设计语言》原著即为C语言的设计者之一Dennis M.Ritchie和著名计算机科学家Brian W.Kernighan合著的一本介绍C语言的权威经典著作。我们现在见到的大量论述C语言程序设计的教材和专著均以此书为蓝本。
3、如何学习C
练!动手!
4、本课学习指针,结构。
指针pointer是C语言的精髓,有人说不会使用指针就相当于不会C的精髓,指针是重点也是难点。
结构struct是一种数据类型,类似于数组和指针,不同的是数组中所有元素的数据类型必须是相同的,而结构中各成员的数据类型是不同的。有什么用呢?方便数据管理,特别适合大型数据的处理,另外数据结构复杂了,算法就简单了,在写程序的时候就方便很多。
5、第一部分指针:首先&运算符以及地址的概念
1)输出hello world,熟悉编译器devc++
2)输出一个变量i的值到终端
3)输入变量i的值并显示在终端上
4)解释&符号是一个运算符,作用是获取变量i的地址
1)-4)内容参考http://www.cnblogs.com/c-programing-language/p/6401996.html
5)解释存储单元的地址和存储单元的内容
在C语言里变量存放在内存里,内存是什么呢,就是大家常说的内存条,或者是在买电脑时常说的这个电脑的内存是4G或者8G,甚至是16G,在以后学习专业课时会经常和内存打交道,一般使用下图来表示内存,其中每个小格子就是一个存储单元。变量就存储在这些存储单元中,比如定义变量i=5;j=6,那么5,6就会被分别存放在存储单元中,那么如何找到这个存储单元,有的同学说通过变量名i或j来找到,注意这个i和j是标识符是我们人可以认识的,计算机并不认识,计算机只认识01,计算机会对每一个存储单元从0开始编上号,假设内存只有8个存储单元,编号时候就是000(0),001(1),010(2)....111(7),内存不止8个内存单元,如果是4G需要2的32次方,也就是需要32位的数来对内存单元编码,二进制太长一般使用十六进制来表示地址,那么这些编号就是存储单元的地址,这个地址像一栋大楼的门牌号一样。
你写好C语言程序,定义了变量i和j,程序在编译的时候,编译器会给i和j分配存储单元,那么i和j的存储单元的地址就定了。下面我们编程输出下变量i的地址是多少?
6)输出变量的地址(%x和%p)
若输出地址需要格式转换,地址比较标准的格式是%p,那么既然上面我们说地址一般用16进制,也可以使用%x来表示试一下,使用printf(“%x\n”,&i)和printf(“%p\n”,&i)进行输出地址,结果如下,地址是62fe4c,很大的一个编码。%x和%p的差别就是%p结果比%x多了一些0,位数不一样,%x是将地址转换为一个无符号整型输出,下面使用sizeof输出下整型和地址的长度。
从结果可以看出,地址长度是8个字节,整型的长度是4个字节,也就是说地址是一个8*8=64位,整型是32位,从大小可以看出%p是直接输出地址,%x是将地址转换为32位整型输出到终端。那么在64位机器下,当地址比较大的时候,%x再截取低32位输出,可能会导致地址错误。所以一般情况下使用%p作为地址的转换格式。
7)写程序验证&运算符不能取表达式的地址,&取相邻变量的地址,&取数组、数组元素、相邻元素的地址。
http://www.cnblogs.com/c-programing-language/p/6401996.html
8)指针的定义
通过上面的学习,我们了解到&运算符是取变量的地址,也了解到将地址交给一个整数类型,这个事情不靠谱,那么什么样的类型可以表示地址呢?指针!也了解了地址实际上是一个整数,那么怎样才能够存放并表示一个地址变量呢?使用指针。
8.1指针变量如何定义
8.2定义指针变量时*的位置 :sizeof()查看p和q的长度。
8.3引用指针变量时,*是一个运算符
在定义一个指针变量时,*表示p是一个指针,而在引用指针变量时,*是一个运算符,*作为一个运算符大家不陌生,乘法运算符就是使用*。现在需要把这个*当作一个新的运算符,一个单目的运算符,只有一个操作数,我们用它来访问指针的值所表示的地址上的变量。使用printf("*p=%d\n",*p);输出*p的值验证上述说法。在这里可将*p作为一个整体,就是一个整数,一个整数既可以做为左值又可以作为右值。
8.4用作函数参数的指针
http://www.cnblogs.com/c-programing-language/p/6423537.html
第一节课大纲