《c语言程序设计个人总结.docx》由会员分享,可在线阅读,更多相关《c语言程序设计个人总结.docx(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、c语言程序设计个人总结 在实践中怎么去写好一手代码,这个还真的得多看看人家的代码;个人觉得,我们可以多参照Linux的编程风格。现在,我就来为大家举荐一篇c语言的总结! 【共享】关于C语言程序设计小结 真正的程序设计高手不是语法上的精通而是程序总体架构,算法上的周密。当时高校时都是利用C51写的51单片机的程序,根本就不管程序的可维护性,程序大小,就是一个C文件中包含了全部的函数体。在工作中这是一个完全不能接受的习惯和致命错误。 其实C语言的语法真的很简洁,很快就能驾驭,但是将这简洁的语句组织成一个良好的架构那可就是一件很难的事了。最近在工作中编写的程序都是我们总监打好的架构,然后在里面进行添
2、砖加瓦的。看着我们总监写的程序,那简直就是一个神。同样能实现的功能函数,虽然我也能编写,可相比之下我们总监的思想就更加的开阔和先进。 现将最近学到的一些方法写下,来提示自己: 1.在编写各类单片机功能程序时,不要急于书写,肯定要先想出一个很好的结构和方法,虽然你写出来的程序可以正常运行,但是你是否想到了它的可维护性,可阅读性等等一些很重要的因素呢?所以肯定要先想出一个很好的架构在来起先编写。 2.c文件,和h文件设计的要求。C语言显得特别的自由,但我们在工作中为了程序软件的种种缘由,肯定要规范自己的写法,这对自己和他人都是有利的。在单片机的程序中,我们应当把一个模块功能建立一个单独的C文件,这
3、一C文件中包含和该模块功能全部相关的函数体,同样把和该C文件相关的常量,表达式等等也单独的建立一个h文件,最好是只让它对应的C文件引用,不要让其它的C文件进行引用,这样很好的体现程序的模块化和内聚性。在对单片机的内部寄存器进行操作的程序,我们应当单独的建立一个文件,只允许MCU内部的寄存器名出现在该文件中,你试想一个,在你的全部文件中这这里出现一个寄存器名,那里出现一个寄存器名,是不是可读性不好,没有实现程序的模块化呢? 在程序过程中我们应当把多次用到的变量和常量最好的定义为宏,这样当这些变量 ,常量要更改时,就可以很便利的更改,不用大量的去找寻。在运用文件包含时,肯定要留意路径的选择,什么时
4、候用, ,不用出现重复编译的状况,有时重复编译可能编译器没有报错,但是这样明显不好。要学会很好的运用条件编译语句,这对我们的程序很有用,在许多小型的操作系统中,都有硬件裁减的功能选择,这正是利用了条件编译,须要这一功能时我们就定义它,不须要时就不去定义,显得很便利。 3.指针的妙用。C语言的特色就在于它的指针。很好的运用指针能让我们的程序更加的有条理性,同样它也是C语言中语法最难的一点了,所以在运用时肯定要留意。详细的好处太多了,在这就不在多说了,大家自己体会就能很好的明白了。 总之,C语言算是一门很好的语言,我们不仅要学会它的语句,更重要的是要具有好的思想,思想有多深,就确定你能飞多远! 史
5、上最全C语言编程学问总结 我们是不是在写程序的时候错误许多,就算编译通过了也达不到我们预期的结果。之后自己还找不到错在哪儿。我觉得语言之所以能称之为语言,首先它确定是一种工具。一种相互沟通、相互通信、相互传达之间意图的工具。作为语言那确定得有自己的语法(比如像表达式,函数,循环,指针)。C语言虽然很强大,但是他也有不少陷阱。所以,写这篇文章有两个目的:一是把C语言一些误用易错的地方总结一下,二是把C语言一些基本语法总结一下。 一、总结一些误用易错的学问点 1.关于自增自减(即+i,i+) 要想给一个数加一或减一我们可以: i += 1; j -= 1; 而C语言还允许用+和-运算符,其实这里有
6、误导,因为+和-可以作为前缀和后缀,这样的话他们就有可能变更操作数的值,下面让我们来看看: i = 1; printf(i is %dn,+i); /* prints i is 2 */ printf(i is %dn,i); /* prints i is 2 */ 计算表达式i+的结果是i,但是会引发i随后进行自增: i = 1; printf(i is %dn,i+); /* prints i is 1/ */ printf(i is %dn,i); /* prints i is 2 */ 第一个printf 显示了i自增前的原始值,其次个printf显示了i改变后的新值;当然 - 类似我
7、就不举例了 但在同一个表达式中多次运用+和-往往很难理解我们看看下面的例子: i = 1; j = 2; k = +i + j+; i,j,k最终值分别是2,3,4而+i是2 j+是2; 总结:不管是+i还是i+执行这条语句后i的值都加一了只是(+i)的值加一了而(i+)没变。 2.typedef与#define 2.1.typedef C语言除了干脆运用标准的类型名(如 int char float double)和自己声明的结构体、共用体、指针、枚举类型外,还可以用typedef声明新的类型名来代替现有的类型名。 typedef unsigned char u8; typedef unsi
8、gned int u16; u8 count; u16 time; typedef struct u8 month; u8 day; u16 year; DATE; DATE brithday; 总结一下,声明新的类型名的方法: 1.先按定义变量的方法写出定义体(如 unsigned int i) 2.在变量名换成新的变量名(如将 i换成u16) 3.在最前面加上typedef (typedef unsigned int u16) 4.然后用新类型名去定义变量 2.2 #define 2.1.1不带参数的宏定义 #define 标识符 字符串 #define PI 3.1415926 留意:
9、1.它的作用是在本程序中用指定的标识符PI来代替3.1415926 2.宏定义是用宏来代替字符串也就是做简洁的置换,不做正确性检查假如写成 #define PI 3.l4l6926 即把1写成了字母l但是预处理照常代入不做任何语法检查! 2.1.2带参数的宏定义 #define 宏名(参数) 字符串 #define S(a,b) a*b area = S(a,b); #define MAX(x,y) (x)(y) ? (x):(y) 3.typedef和#define的区分 一般来说typedef 因为它能正确处理指针类型 typedef char *String1; #define Stri
10、ng2 char * String1 s1,s2; String2 s3,s4; s1,s2,s3 被定义为了char* 但s4却被定义为了char型 3. static 变量 static变量大致分为三种用法 1. 用于局部变量中,成为静态局部变量. 静态局部变量有两个用法,记忆功能和全局生存期. 2. 用于全局变量,主要作用是限制此全局变量被其他的文件调用. 3. 用于类中的成员.表示这个成员是属于这个类但是不属于类中随意特定对象 1. 静态局部变量 静态局部变量属于静态存储方式,它具有以下特点: (1)静态局部变量在函数内定义 它的生存期为整个源程序,但是其作用域仍与自动变量相同,只能在
11、定义该变量的函数内运用该变量。退出该函数后, 尽管该变量还接着存在,但不能运用它。 (2)允许对构造类静态局部量赋初值 例如数组,若未赋以初值,则由系统自动赋以0值。 (3) 对基本类型的静态局部变量若在说明时未赋以初值,则系统自动给予0值。而对自动变量不赋初值,则其值是不定的。 依据静态局部变量的特点, 可以看出它是一种生存期为整个源程序的量。虽然离开定义它的函数后不能运用,但如再次调用定义它的函数时,它又可接着运用, 而且保存了前次被调用后留下的值。 因此,当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采纳静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意
12、外的副作用,因此仍以采纳局部静态变量为宜。 举例如下: void fun() static int a = 1; a+; 在第一次进入这个函数的时候,变量a被初始化为1!并接着自增1,以后每次进入该函数,a就不会被再次初始化了,仅进行自增1的操作;在static独创前,要达到同样的功能,则只能运用全局变量: int a = 1; void fun() a+; 2.静态全局变量 全局变量(外部变量)的之前再加上static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区分虽在于,非静态全局变量的作用域是整个源程序
13、, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能运用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避开在其它源文件中引起错误。从以上分析可以看出, 把局部变量变更为静态变量后是变更了它的存储方式即变更了它的生存期。把全局变量变更为静态变量后是变更了它的作用域, 限制了它的运用范围。因此static 这个说明符在不同的地方所起的作用是不同的。 3.static的类成员变量 static关键字有两种意思,你看上下文来推断 1.表示
14、变量是静态存储变量,表示变量存放在静态存储区. 2. 表示该变量是内部连接(这种状况是指该变量不在任何之内,就象全局变量那样,这时候加上static),也就是说在其它的.cpp文件中,该变量是不行见的(你不能用). 二、static 函数 内部函数和外部函数 当一个源程序由多个源文件组成时,C语言依据函数能否被其它源文件中的函数调用,将函数分为内部函数和外部函数。 1 内部函数(又称静态函数) 假如在一个源文件中定义的函数,只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用,这种函数称为内部函数。 定义一个内部函数,只需在函数类型前再加一个static关键字即可,如下所示: sta
15、tic 函数类型 函数名(函数参数表) 关键字static,译成中文就是静态的,所以内部函数又称静态函数。但此处static的含义不是指存储方式,而是指对函数的作用域仅局限于本文件。 运用内部函数的好处是:不同的人编写不同的函数时,不用担忧自己定义的函数,是否会与其它文件中的函数同名,因为同名也没有关系。 2 外部函数 外部函数的定义:在定义函数时,假如没有加关键字static,或冠以关键字extern,表示此函数是外部函数: extern 函数类型 函数名(函数参数表) 调用外部函数时,须要对其进行说明: extern 函数类型 函数名(参数类型表),函数名2(参数类型表2); 个人总结本文来源:网络收集与整理,如有侵权,请联系作者删除,谢谢!第13页 共13页第 13 页 共 13 页第 13 页 共 13 页第 13 页 共 13 页第 13 页 共 13 页第 13 页 共 13 页第 13 页 共 13 页第 13 页 共 13 页第 13 页 共 13 页第 13 页 共 13 页第 13 页 共 13 页
限制150内