时间:2020-09-19 11:24:37 来源:信盈达 作者:
欢迎您的评论。
对于变量名称,长度并不是名称的价值所在,清晰的表达才是。不常用的全局变量可能会有一个很长的名称,像 maxphysaddr。在循环中每一行所使用的数组索引,并不需要取一个比 i 更详尽的名字。取 index 或者 elementnumber 会输入更多的字母(或调用文本编辑器),并且会遮盖住计算的细节。当变量名称很长时,很难明白发生了什么。在一定程度上,这是排版问题,看看下面
for( i = 0 to 100)
array[i] = 0;
vs.
for(elementnumber = 0 to 100)
array[elementnumber] = 0;
np
node[i]
parent->link[i].type
vs.
lp->type.
如果想取下一个元素的 type 可以是
parent->link[++i].type
或
(++lp)->type.
np->left
node[i].left.
if(goleft)
p->left=p->right->left;
else
p->right=p->left->right;
if(checksize(x))
if(validsize(x))
i=i+1; /* Add one to i */
还有更烂的做法:
/**********************************
* *
* Add one to i *
* *
**********************************/
i=i+1;
瓶颈总是出现在令人意想不到的地方,直到证实瓶颈在哪,不要试图再次猜测并加快运行速度。
在没有对代码做出估量之前不要优化速度,除非发现最耗时的那部分代码,要不也不要去做。
花哨算法有很大的常数级别复杂度。在你确定 n 总是很大之前, 不要使用花哨算法。(即使假如 n 变大,也优先使用规则 2).例如,对于常见问题,二叉树总比伸展树高效。
尽量使用简单的算法与简单的数据结构。
以下几乎是所有实际程序中用到的数据结构:
数组
链表
哈希表
二叉树
当然也必须要有把这些数据结构灵活结合的准备,比如用哈希表实现的符号表,其中哈希表是由字符型数组组成的链表。
如果选择了适当的数据结构并把一切都组织得很有条理性,算法总是不言而喻的。编程的核心是数据结构,而不是算法。(参考 Brooks p. 102)
延伸阅读
有人认为,现在是java和.net的时代,有谁还需要C以及汇编呢?孰不知,java和.net是建立在软件之上的,是为了垄断市场而建立起来的体系, 犹如挖好一个金壁辉煌的坑,请你往下跳,还自以为站在巨人的肩膀上,事实上成了坑底之蛙。
要成为一个真正的程序员,并期望成为一个程序员高手,必须从机器出发,从cpu到操作系统,再到软件体系,高手的境界就是悟道后的明镜灵台,软件设计出神入化,我就是程序,程序就是我。
C语言是各大操作系统的基础,Unix、Linux、Windows其内核都清一色是C语言开发的,(某些地方是和汇编语言混合开发的),君不见 WindowsAPI都是C语言函数的接口?
Unix/Linux绝大多数应用都是C语言开发的;Windows应用程序用纯API开发已然不多,大多都是依靠某种ApplicationFramework,比如所谓的VC++,其实就是指VCIDE+C++语言+MFC(现在重点已转向ATL、 WTL),但是Windows服务、网络、驱动程序等底层软件,还是C语言开发的。
各种语言的编译器,包括java虚拟机,都是用C语言开发的。各种嵌入 式设备,如手机、PDA也都是C语言开发的。
由于C语言灵活、强大,初学者要全面地掌握它非常吃力,因此在学习C语言的过程中,要多看课本、代码。
首先一定要熟练掌握变量、常量、基本数据类型、库函数及特点和运用、运算符、表达式及语句、C语言编写的基本格式。再次要掌握C语言的流程控制语句、数组、函数、指针等基础知识,上述知识熟练后就可以学习链表、队列、树、图等知识。
最后要熟练各个知识点的运用,可以把学习的重点放在函数的设计框架、参数设计、返回值设计等关键问题上。
在C语言的学习过程中,一般有大量的算法和数据结构需要去了解(大一同学在大二会接触这些知识),许多算数运算和逻辑运算、关系运算、循环结构都可以利用数学知识来完成的,同样许多算法都是为了完成数学领域的计算。
编写程序是为了让计算机可以代替人操作运算过程,从而减少人力。
可见数学在计算机学习中的重要地位,有了数学知识,你会发现数据结构与算法原来也是很简单的。
同理,在C语言的学习过程中,我们会用到大量的英语知识。对于编程来说,英语的作用体现在阅读英文文档,适应国际化的编程环境,我们要记住常用的一些C语言中用到的词汇,也就是诸多的关键字。
计算机专业的大部分课程都是通过实践来检验学习成果的,更重要的是要将所学的理论知识都要在实践中更好的发挥。
编程序是个实干的活,光说不练不行。
刚开始学的时候可以多练习书上的习题。对于自己不明白的地方,自己编个小程序实验一下是最好的方法,能给自己留下深刻的印象。
自己动手的过程中要不断纠正自己不好的编程习惯和认识错误 C语言也是一门实践性很强的课程,既要掌握概念,又要动手编程、上机调试运行。
养成上机前分析题目,并编出程序源代码的好习惯,编程时要注意程序的格式、标点符号等,同时调试程序时要有耐心,有时一个程序可能要修改多次,甚至于费了不少劲还是没结果。
要不断向老师或者同学请教,不断地查阅资料,所以编程千万不可遇难而退,这个时候是决定你水平提高的关键,一定要坚持到底。大家对自己要有自信,对学好C语言课程要有信心,这样我们才会有一个好的学习状态并改正BUG。
程序调试成功后,要总结分析出自己在编写程序时都出现了那些不足,在以后的解题过程中自己应该注意的问题。上机调试程序成功后要完成实验报告,逐步积累调试程序的经验。培养自己良好的编程习惯。
(1)在比较复杂的代码后面要有注释。如果光溜溜一堆代码,别人就不可能看懂你的代码,而且也不利于查找错误。除非你一直编东西给自己看。能在代码里说明白的就一定要在代码里体现。比如变量名、函数名,在命名的时候尽量说明是干什么用的。
(3)注意语句的选择。并不是分支语句就用if循环就用while、for。在适当的情况下switch和dowhile语句也是要用的。在某些时候,switch语句比if语句更加精练明了,而dowhile比while少一个循环。
免费领取试听卡
申请已经提交
老师会马上给您安排试听课程!
申请出错了
您可以加老师QQ:914865590报名咨询!