C语言编程常见问题分析及对策.docVIP

  • 27
  • 0
  • 约2.7千字
  • 约 6页
  • 2021-08-11 发布于山东
  • 举报
C语言编程常见问题分析及对策 C语言编程常见问题分析及对策 PAGE / NUMPAGES C语言编程常见问题分析及对策 语言编程常有问题剖析及对策 纲要:本文从作者的经验出发,剖析了 C 语言编程过程中碰到的常有而又特别重要的问题,并提出 认识决的方法。 重点词: C语言 嵌套 货仓 指 针 中图分类号: TP312 文件表记码: A 文章编号: 1007-9416(2011)11-0195-01 语言是一种面向过程的计算机语言,它的表现能力和办理能力极强, 拥有丰富的运算符和数据种类,便于实现各种复杂的数据构造。它还能够直接接见内存的物理地点,进行鉴于 bit 位的操作。因为 C 语言实现了对硬件的编程操作,所以 C 语言集高级语言和初级语言的功能于一体。既可用于系统软件的开发,也合适于应用软件的开发。 在 C 语言的编程过程中,除了要理解 C 语言的基本知识,要想编写高效简短靠谱的 C 语言代码,还需要掌握更多的编程经验 ,办理一些常有的问题。 1、最简单犯的错误 语言最简单犯并且结果最严重的问题算是“等于”关系运算符“==” 。在 C 语言中,“=”为赋值 语句,“==” 为等于关系运算符。 而其余好多计算机 语言等于关系运算符是 “=”,所以使用者在分支构造 语句中,有时常常把“==”写成“=” ,而后来果往 往会致使程序崩溃,并且这种错误还特别不简单发现。 解决这一问题的一个很好的方式是,当“等于”关系 运算符是常量和变量比较的时候, 比如要写 if(a= =1), 必定要记着形成一个大脑自然反响,就是把常量写在 左侧,即 if(1= =a)。当“等于”关系运算符都是变量 比较的时候,最好反响写成 “不等于” 关系运算符 “! =”,这样就能够减少犯这种简单、也简单犯的错误。 2、内存溢出问题 一些 C 语言的基本函数如内存的拷贝函数 (memcpy(), memmove())、字符串的拷贝函数 (strcpy(), strncpy())自己的安全性比较差,这些标准函数不判断 原内容和目的内容的长度,当原内容长度大于目的内 容长度的时候,就会造成内存溢出,致使程序崩盘, 在使用这些函数时必定要注意,最好自己写一个函数 封装它们代替这些函数功能。 3、嵌套循环问题 循环语句是一个特别好的构造,它能够节俭好多 代码,使程序代码看起来特别简单。而关于嵌套循环 更是特别精妙,能够解决好多问题,可是因为内循环 和外循环的退出条件不一样,在某种没有考虑到的异样 状况下简单致使死循环,进而造成灾害性的结果。因 此,关于一个靠谱性要求比较高的程序来说,尽可能 减少嵌套循环的使用,只需有可能就把它写成几个单 独的循环,关于有实足掌握的嵌套循环,也不建议使用。 4、货仓问题 一般程序默认的货仓大小约为 1M,固然程序货仓大小能够设置,可是为程序货仓设置较大的值,可能增添内存的开支和启动时间。所以在程序设计时不盲目的为程序设置很大的货仓空间。所以关于一个大型程序开发,一定要考虑每个函数的货仓的使用,关于多线程来说,每个函数尽可能节俭有限的货仓空间。特别禁忌在函数中定义局部变量的大型数组,假如在函数中定义一个局部变量的大型数组,就有可能致使定义的数组覆盖货仓段或代码段中的数据,进而造成程序的崩溃。为节俭有限的货仓段空间:防止使用局部变量的大型数组;尽量防止用长调用或递归函数;防止传达大型构造体,建议用指针取代;定义短寿命变量 (像 auto 种类 )。 5、指针的使用 C 语言的难点和精髓就是 C语言的指针,比如以 下几种指针方式:(1)整数指针变量 int *ptr ;(2)字符指针变量 char *ptr ;(3)指向整数指针的指针 int **ptr ; (4)整数数组指针 int (*ptr)[3] ;(5)整数指针数组 int (*ptr)[3] ;(6)指向整数数组指针的指针 int *(*ptr)[3] 。关于初学者来说,还没有看完预计就没有信心了。其实指针也特别简单,别看它的定义很复杂,和一般变量对比,一般变量是用来表示一个数据,每一个数据 都存在计算机的地点中;而指针是用来表示一个计算机的地点,关于一个 32 位程序,全部种类的指针的值都是一个 32 位整数,它的值是 0x0000-0xffff 中的一 个。所以关于第一个例子整数指针变量  int *ptr=1  来说, ptr  的值是一个计算机地点,在该地点上保留的是  1 这个整数;关于第二个例子字符指针变量  char *ptr=  ’ a’来说, ptr 的值也是一个计算机地点,在该地点上保留的是’ a’这个字符; 关于第三个例子指向整数指针的指针 int *ptr=10 来说,ptr 的值是一个计算机地点,它是用来寄存 *ptr 这个计算机地点的

文档评论(0)

1亿VIP精品文档

相关文档