现在的位置: 首页 > 综合 > 正文

写给C语言初学者的建议

2013年10月10日 ⁄ 综合 ⁄ 共 1233字 ⁄ 字号 评论关闭

很多c语言的初学者可能会碰到很多问题,最大的问题是没有经验,也不知从何提高,根据我多年的经验和给别人面试的结果看,很多人的问题都在于语法不熟练,没有经验。

标准C语言语法其实并不多,但是很多c编译器为了实际工作中需求增加了很多新特性,这些对于已开始,并不需要掌握。

1,c语言的变量。对于变量很多人都知道,只要学过的,都很清楚是怎么回事。但是对于变量在实际运行中的分配空间并不知道,如char一个字节,int 4字节,short 2字节,并且在不同的操作系统下会有些许差异。另外指针一般都是4个字节。

同样的道理,变量的类型就是和分配空间密切相关的。要掌握(强行)类型转换的本质,我想你一定知道了,对了,无非是访问空间不同了。值呢?

地址对齐,align关键字,为了更快速访问存储器。和大小端一样这是和存储器相关的,当然也和cpu相关。

2,指针。这个是最头疼的问题,也是常常理解不深刻的问题。其实指针就是地址,为了方便和节省空间,我们定义一个指针,让他指向我们想访问的地址,然后操作。指针也是有类型的,通常我们定义和要访问变量相同的类型。

3,函数。函数就是功能代码,对变量进行操作,变量对应的就是你要访问的对象,最终都是写到计算机的寄存器中的。所以需要对计算的芯片的寄存器(功能)需要比较好的理解。如intel8086系列的一些寄存器,如何使用就需要看相关的spec.基本的功能就是,给出你要访问的地址,然后向该地址读写值。

好好的谢你的printf()函数,这个函数可以告诉你很多,如sizeof(long),你知道这个值么?

4,流程。很重要的一点就是思路,流程。其实看一规范,读一份spec.很简单。关键是你如何把spec上所标示的功能写成代码。这就需要思路,这是最基本的。

其实也很简单,只要找对地址,然后向地址写你想要的功能(spec)。

5,存储器。cpu之外的所有的设备都可以没有,但是存储器不能没有。小到寄存器,达到硬盘。对存储器的理解很重要。其实没有什么重要的。就是存储数据和代码的地方。cpu会从存储器中去取指令和数据。所以对存储器要了解,了解基本结构,设计原理,如果可能的话了解一些简单的时序图和原理图。最基本如PN节,单位存储单元,菊花链等等。

除此之外,对于通常的文件系统也要了解,一般入fat,ext2,cdfs,ntfs等要了解一下。这个有助于了解存储器是如何被管理的。文件系统的读写read,write,open close,这些函数是必须的。

内存是一类特殊的存储器。通常只在运行的时候使用,使为了得到更好的性能。内存中有一个概念,其实是操作系统的叫地址重映射,因为在外存上的地址和内存中的地址可能不一样。这就需要地址重映射。可以回去看一下操作系统的课本。

另外对于内存的分配malloc free等等函数要掌握。

6,引导。只有一句话,把你要的代码放在特定的地方,然后引导程序会将你的代码copy到内存然后remap一下,开始运行你的系统。

就讲这些吧,(待续)。

抱歉!评论已关闭.