我的C学习之路

我的C学习之路
    2002.10.22
    作者:Andy  GPA Studio
    Http://ChinaGPA.com
    为什么学C语言
    说起来真觉得有点惭愧,回想一年前时是因为考中程而去学习C语言的。小A就是因为这样才接触了C语言,当时还经常听到对于准备学习的我一些不好的传闻,我不知道是不是传闻,反正他们一时说“都学C语言都过时了”,一时又说“C语言实在太难学了”等等。我有好几个同学那时候都开始学习着VB或VFP之类的可视化语言了(学VFP其实是因为我们是从FB走过来的),所以当时真的有一点动摇的,但我的目标还是不会变的:考上程序员。

    准备学习阶段
    决心要考上中程的我,就在升到高二新学期时就和几个志同道和的同学一起研究一下这事,首先当然是要有一本书在手,但至于买什么书就得好好想想了(一本好的入门书可以带给初学者学习的兴趣)。刚好这年新来的高一也是学习C语言的,我想老师的选择应该不会错吧!最后我们每个人手上都有了自己的第一本C语言书《C程序设计第二版》,作者就是现在常给我们叫作“老潭”的人了,其人姓潭名浩强。

    初学C语言
    细阅目录是我每看一本新书时必须的,而且我还常试图想出其大概内容(这完全是小A“天马行空”的想象力)。对于我看书的心得,无论是什么书,没法想象一遍就能把它完全搞懂,所以我通常都会重头开始阅读几遍,对于懂的地方就搞得它精,不懂的地方就搞懂吧(看过几次后常常你都会对自己这么说“原来是样的”),所以我的建议是开始阅读时不要遇到什么难的地方就马上停下来,可以直接跳过这部分。说明一下,以上都是我对于学习的新认识,以前的话我还是笨笨的一步一步来,所以下面讲的内容都会“取长避短”。

    细谈学习《C程序设计》
    C语言概述:
    通常关于语言的教程都会交代一下其语言的发展历史,《C程序设计》也不离外。

    程序的灵魂-算法:
    哇!这一章怎么会让我有似曾相识的感觉呢?什么是程序?又摆出了经典的一个等式了,数据结构+算法=程序,没错,算法是重要的。算法的表示可以是自然语言、流程图、N-S流程图、伪代码等其它工具来到表示。以上的就总是有印象在我的脑海里,但一时又想不到,但在进一步学习中我终于发现了其秘密了,原来我有另一本老潭的书《Qbasic语言教程》,这一书我不去翻开的旧书堆我也差点给忘了呢(哈,小A差点就忘了有学过QB语言,都怪小A当时的兴趣都在FoxBASE上)。《Qbasic语言教程》的第一章和《C程序设计》的第一章没有多太分别,我想是完全照搬的吧!还有一点就是连练习题也基本是一样的(也难怪老潭,因为他出的计算机教学的书实在是太多了,如果每本都不同风格的话,那么我想他早已满头白花了,所以偷一下懒也是应该的,哈哈~`)

    数据类型、运算符与表达式:
    数据类型是语言所必须有的,但C语言的数据类型种类相对于其它语言来说就显的特别的多了,以前我学FoxBASE都只是碰到过字符型、数值型、逻辑型这三种罢了。所以搞懂C语言的数据类型也变成了初学者的难题之一,我在这里提一个建议给大家。学习C语言的数据类型不要想着一次过把把它们都记住了就算完事,也没有可能的事。因为对于各类型的数据参于赋值运算,就比如一个字符型的赋值到整数型里,他们是没有错的,编译系统自动地将字符转为相应的ASCII码来到进行运算,其它更多的我不在这里赘述了,因为老潭书上里有。小A再插一句,它们无非都是关系到原码、补码、反码这三个知识,如果搞懂了这我想一切都好办了。
    数据和运算符组成一个表达式,对于表达式这个概念其实小A也是在学习C语言时才真正领悟到的,当时学QB时又不怎么学,而FoxBASE呢,我好像没有听到过这个概念(这都怪小A了,哈哈)谈到表达式又有一个建议给初学者的,各类型之间的运行类型一定是按占用内存字节小的变为和大的一样,比如int和double,int型的变量就要转为double的进行运行算。而float和char是特殊的,它们都各自变成为double和int来到参加运算。运行符的优先级在编程中是占绝对重要的位置,很多程序也因为这样而常存在错误,而调试起来又看似正常,但其结果常常不同所想的一样。一个不太起眼的地方就常令初学者觉得奇怪。怎么掌握好它呢?一开始不要紧着来,以后学习当中将会慢慢的把它们都掌握在手中的了,你不要又告诉我你一次过就背完那张运算符优先级的表,我想你这样没过几天什么都给忘掉了,所以这里强调实践上把它们掌握。

    C语言的输入输出
    我们学习编程都是因为喜欢它能在电脑屏幕上显示出东西来,而这东西完全是由你一手控制操作的。每当与计算机打交道的时候都会有莫大的满足感犹生。输入输出在编程中可以说是占了一大席位(没有输入输出还有意义吗?)听闻标准C其实是没有输入输出语句的,是调用输入输出函数库来到完成的。stdio.h这个头文件就是了,呀!奇怪了,我怎么刚开始用C编程的时候也没有用到这个头文件啊?小A,其实不是不用,而是因为stdio.h这个头文件包含了一些最基本最常用的函数(输入输出就是重点了),编译器就早给链接了。

    在学习输入输出这章不是刚好可以做一些数据类型的测试吗?嗯!是机会动动你的手了,说到初手动手调试程序,我就不得不说一下关于TC(编译器)里的一个问题了,就是路径设计的问题,请看http://www.chinagpa.com/bbs/showtopic.asp?TOPIC_ID=180&Forum_ID=33这帖有图倒教你如何设置好它。我当时也真是够努力的了,我试了大量的输出格式符和表达式运算,就如下:
    int a,float b;
    printf("%d",a+b);
    因为这里b是float,所以自动转为double型再跟a相加,a在这里也随之变为与其相应的double型,再后就是输出结果,结果是按int型输出,由此double强制转换成int切断小数点后的数。我想大家也不会偷懒吧,因为小A都已经是一个很懒的人,但小A都还是认真的对待了。大家努力吧,我们所学的不会白费的,现在下来我想数据类型和表达式都有了一个大的飞跃了。

    程序控制结构
    相信大家对这都非常熟悉了吧(有学过编程的人或虽然没有学过,但看过的人都知道)所以也没有什么好说的,注意一下语法就行了。那时我就是给一个地方给骗了,其实并不是骗,而是小A自己不细心罢了。do...while();这个看上去应该和QB的一样,可它就偏偏不和你所想的一样,对于QB来说,这个是直到型循环,就是当条件为真的进修才退出循环,而C呢,它既然条件为假的时候才退出,即为真时也在继续执行循环。(大家现在应该知道是小A是多么的笨的了吧!明明细心看书就没事了,而小A自以为是,把QB往C搬了)这里得出一个结论就是各种不同的语言都有自己的特性,不要以为看上去一样但住住这都会给你一个“出乎意料”的。

    函数
    函数在于C语言里说算是一个大特色了,因为组成C程序的都是由函数来完成。提倡模块化是面向过程编程的一个重要因素,说真的,我特别喜欢C语言里的函数定义,因为我觉得它非常美。你看这两{ }个符号是多么的有线条感,真的是美的享受。FUNCTION... END FUNCTION见鬼去吧!哈哈哈。

    数组、指针、结构体
    我喜欢C的灵活,但它也让我更愁。说到C的灵活大家应该都知道是针指了,特别是数组和指针的一些关系。而结构体的运算更是离不开指针了,至少我是这么认为。我写到这里不想再下笔了,因为之前我写的“程序员考试补课笔记”上都有谈及到,而且是一种新的看法(小A觉得不同书上所说就认定是不同的了,哈哈~)当然这种看的思考指针都是出自于我的老师。大家把它从我的家上DOWN下来吧,地址是http://www.chinagpa.com/ebook/list.asp?id=31 ,大家有什么新的见解或者建议都欢迎上ChinaGPA.com(GPA之家)发表。
    就这样结束这篇“我的C学习之路”吗?不,小A还想继续涂(涂鸦)啊!那好吧,其实还有一些值得一说的话,我想再推荐一两本好书给大家。在我学习C中都买了好几本相关的书了,一本机械工业出版的《C程序设计教程》,这本书小A推荐给喜欢挑战的朋友,因为里面的习题,不,不应该叫习题,叫它项目好了。比起老潭那本基本上都是关于数学的习题有趣多了,相当一些的都是有关于编一些小游戏或者更有挑战的是用C写一个编译器出来。还有一本是我还没有怎么看过的,但书里的内容真的不错,内存存储(小A以前根本不知道有分什么近指针、远指针的),中断编写和驻留内存程序,其实我本想都把它们学一学的,可是因为中程考试的原因,最后还是放弃了,不过有机会的话我还是会把它们攻破的。
    学习离不开实践,实践中自然也会学到知识。在我刚学C语言的时候家里架上了ADSL,网上的资源不多不少也长住在我的硬盘里了。另外还真的非常感谢网络,今天这篇文章能出现也是完全受网络的影响。侯捷这个名字我想你一定听说过吧,至从我上了他的网站后完全改变了我,他的每一篇文章都鼓励着我,燃烧起我内心的一把“火”,让我感觉到学习是充满着乐趣。我所写的文章需要不是惊天地的,但是我绝对是真心想帮助每一位助学者,我也是过来人,感受到孤独一个人学习的苦。所以我非常喜欢结识一下网上的写手,我愿向他们学习,我也曾受他们的文章所感动,也更受他们的技术文章也增长。
    我需要在这里再多谢一个人,在短短的几个星期里,让我完完全全搞明白C语言的是我老师林海国,希望他不会介意把他的名字放到这篇这么糟糕的文章上,他的无私精神让我深深感动。对于上面说的完完全全可能淡不上吧,不过至少给我的感觉是我觉得C语言里再没有朦糊点了。
    小A好不容易终于把这篇文章涂完了,谢大家一直对GPA之家的支持,小A其实也想借些机会让更多的人动起你手头上的笔头,帮助更多的人。因为连小A语文水平可以说烂得很,而且技术虽然不是很高,但至少能够把自己认为是经验的地方说出来,让更多人受益。小A在这里收得到大家的认同,如果你是有心的人,希望你能加入GPA之家,技术是次要的,还是主要你有帮助的人心。
    还有一件事也在这里说明一下,很多人都问我GPA是什么意思,其实说出来我也觉得自私了。因为其中最后的一个A就是指小A了,前面两个是 Great Programmer 出色/杰出的程序员
    我们的目标是:做中国优秀的程序员

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值