学习啦>实用范文>报告总结>个人总结>

c语言程序设计个人总结

华华分享

  在实践中怎么去写好一手代码,这个还真的得多看看人家的代码;个人觉得,我们可以多参照Linux的编程风格。现在,小编就来为大家推荐一篇c语言的总结!

  【分享】关于C语言程序设计小结

  真正的程序设计高手不是语法上的精通而是程序总体架构,算法上的周密。当初大学时都是利用C51写的51单片机的程序,根本就不管程序的可维护性,程序大小,就是一个C文件中包含了全部的函数体。在工作中这是一个完全不能接受的习惯和致命错误。

  其实C语言的语法真的很简单,很快就能掌握,但是将这简单的语句组织成一个良好的架构那可就是一件很难的事了。最近在工作中编写的程序都是我们总监打好的架构,然后在里面进行添砖加瓦的。看着我们总监写的程序,那简直就是一个神。同样能实现的功能函数,虽然我也能编写,可相比之下我们总监的思想就更加的开阔和先进。

  现将最近学到的一些方法写下,来提示自己:

  1.在编写各类单片机功能程序时,不要急于书写,一定要先想出一个很好的结构和方法,虽然你写出来的程序可以正常运行,但是你是否想到了它的可维护性,可阅读性等等一些很重要的因素呢?所以一定要先想出一个很好的架构在来开始编写。

  2.c文件,和h文件设计的要求。C语言显得非常的自由,但我们在工作中为了程序软件的种种原因,一定要规范自己的写法,这对自己和他人都是有利的。在单片机的程序中,我们应该把一个模块功能建立一个单独的C文件,这一C文件中包含和该模块功能全部相关的函数体,同样把和该C文件相关的常量,表达式等等也单独的建立一个h文件,最好是只让它对应的C文件引用,不要让其它的C文件进行引用,这样很好的体现程序的模块化和内聚性。在对单片机的内部寄存器进行操作的程序,我们应该单独的建立一个文件,只允许MCU内部的寄存器名出现在该文件中,你试想一个,在你的所有文件中这这里出现一个寄存器名,那里出现一个寄存器名,是不是可读性不好,没有实现程序的模块化呢?

  在程序过程中我们应该把多次用到的变量和常量最好的定义为宏,这样当这些变量 ,常量要更改时,就可以很方便的更改,不用大量的去寻找。在使用文件包含时,一定要注意路径的选择,什么时候用<>," ",不用出现重复编译的情况,有时重复编译可能编译器没有报错,但是这样明显不好。要学会很好的使用条件编译语句,这对我们的程序很有用,在很多小型的操作系统中,都有硬件裁减的功能选择,这正是利用了条件编译,需要这一功能时我们就定义它,不需要时就不去定义,显得很方便。

  3.指针的妙用。C语言的特色就在于它的指针。很好的使用指针能让我们的程序更加的有条理性,同样它也是C语言中语法最难的一点了,所以在使用时一定要注意。具体的好处太多了,在这就不在多说了,大家自己体会就能很好的明白了。

  总之,C语言算是一门很好的语言,我们不仅要学会它的语句,更重要的是要具有好的思想,思想有多深,就决定你能飞多远!

  史上最全C语言编程知识总结

  我们是不是在写程序的时候错误很多,就算编译通过了也达不到我们预期的结果。之后自己还找不到错在哪儿。我觉得语言之所以能称之为语言,首先它肯定是一种工具。一种相互交流、相互通信、相互传达之间意图的工具。作为语言那肯定得有自己的语法(比如像表达式,函数,循环,指针)。C语言虽然很强大,但是他也有不少陷阱。所以,写这篇文章有两个目的:一是把C语言一些误用易错的地方总结一下,二是把C语言一些基本语法总结一下。

  一、总结一些误用易错的知识点

  1.关于自增自减(即++i,i++)

  要想给一个数加一或减一我们可以:

  i += 1;

  j -= 1;

  而C语言还允许用++和--运算符,其实这里有误导,因为++和--可以作为前缀和后缀,这样的话他们就有可能改变操作数的值,下面让我们来看看:

  i = 1;

  printf("i is %d\n",++i); /* prints i is 2 */

  printf("i is %d\n",i); /* prints i is 2 */

  计算表达式i++的结果是i,但是会引发i随后进行自增:

  i = 1;

  printf("i is %d\n",i++); /* prints i is 1/ */

  printf("i is %d\n",i); /* prints i is 2 */

  第一个printf 显示了i自增前的原始值,第二个printf显示了i变化后的新值;当然 -- 类似我就不举例了~

  但在同一个表达式中多次使用++和--往往很难理解我们看看下面的例子:

  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 unsigned 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

  注意:

  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 String2 char *

  String1 s1,s2;

  String2 s3,s4;

  s1,s2,s3 被定义为了char* 但s4却被定义为了char型

  3. static 变量

  static变量大致分为三种用法

  1. 用于局部变量中,成为静态局部变量. 静态局部变量有两个用法,记忆功能和全局生存期.

  2. 用于全局变量,主要作用是限制此全局变量被其他的文件调用.

  3. 用于类中的成员.表示这个成员是属于这个类但是不属于类中任意特定对象

  1. 静态局部变量

  静态局部变量属于静态存储方式,它具有以下特点:

  (1)静态局部变量在函数内定义 它的生存期为整个源程序,但是其作用域仍与自动变量相同,只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。

  (2)允许对构造类静态局部量赋初值 例如数组,若未赋以初值,则由系统自动赋以0值。

  (3) 对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。 根据静态局部变量的特点, 可以看出它是一种生存期为整个源程序的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用, 而且保存了前次被调用后留下的值。 因此,当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜。

  举例如下:

  void fun()

  {

  static int a = 1;

  a++;

  }

  在第一次进入这个函数的时候,变量a被初始化为1!并接着自增1,以后每次进入该函数,a就不会被再次初始化了,仅进行自增1的操作;在static发明前,要达到同样的功能,则只能使用全局变量:

  int a = 1;

  void fun()

  {

  a++;

  }

  2.静态全局变量

  全局变量(外部变量)的之前再加上static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于,非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。因此static 这个说明符在不同的地方所起的作用是不同的。

  3.static的类成员变量

  static关键字有两种意思,你看上下文来判断

  1.表示变量是静态存储变量,表示变量存放在静态存储区.

  2.

  表示该变量是内部连接(这种情况是指该变量不在任何{}之内,就象全局变量那样,这时候加上static),也就是说在其它的.cpp文件中,该变量是不可见的(你不能用).

  二、static 函数 —— 内部函数和外部函数

  当一个源程序由多个源文件组成时,C语言根据函数能否被其它源文件中的函数调用,将函数分为内部函数和外部函数。

  1 内部函数(又称静态函数)

  如果在一个源文件中定义的函数,只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用,这种函数称为内部函数。

  定义一个内部函数,只需在函数类型前再加一个“static”关键字即可,如下所示:

  static 函数类型 函数名(函数参数表)

  {……}

  关键字“static”,译成中文就是“静态的”,所以内部函数又称静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件。

  使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名,因为同名也没有关系。

  2 外部函数

  外部函数的定义:在定义函数时,如果没有加关键字“static”,或冠以关键字“extern”,表示此函数是外部函数:

  [extern] 函数类型 函数名(函数参数表)

  {……}

  调用外部函数时,需要对其进行说明:

  [extern] 函数类型 函数名(参数类型表)[,函数名2(参数类型表2)……];


个人总结相关文章:

1.毕业论文个人总结

2.个人工作总结优秀范文

3.2018年度个人总结范文6篇

4.个人工作学习总结

5.个人总结范文

    4047630