APP下载

计算机C语言编程过程中的常见问题

2018-03-22姚衡

电子技术与软件工程 2018年1期
关键词:常见问题计算机

姚衡

随着计算机技术的不断发展,在IT行业之中C语言的地位也是愈加重要。目前,C语言程序设计课程在一般学校之中都有开设,对于未学过C语言编程的高中生学生而言,在学习过程之中C语言的有些知识掌握难度较大,错误较易发生。对此,本文针对计算机C语言编程过程中的一些常见问题,展开简要的分析,并提出解決办法,以期能对其他读者起到一定参考。

【关键词】计算机 C语言编程 常见问题

C语言作为一种面向过程的计算机语言,拥有着丰富的数据类型与运算符,它有着极强的处理能力与表现能力,能使各类复杂的数据结构的运算得以实现。此外,它还能对内存的物理地址进行直接地访问,开展基于bit位的操作。因为,C语言使对硬件的编程操作得以实现,所以它同时具备着低级语言与高级语言的功能。与其它的一些高级语言相比,C语言程序的编写更为简洁,有着更加灵活的书写形式,更便于使用,运算符的应用灵活和表达式类型多样化,使C语言能够实现许多在其它语言之后较难实现的复杂运算,其不仅在系统软件的开发中十分适用,在应用软件的开发上也非常适合。

为了编写出简洁、可靠、高效的C语言代码,在C语言的编程过程中,既要对C语言的基本知识做到理解,还应尽可能地掌握更多的编程经验,能够对常见的问题进行处理。

1 程序输入时的问题

(1)没有仔细对英文字母的大小写进行区别。大写字母与小写字母在C语言的编译系统之中,是两种完全不同的字符。为了增加可读性,以示区别,在习惯上应养成变量名用小写,而符号常量名用大写。

(2)未重视中英文输入状态。

(3)未能熟练掌握运算符。

尤其是等于关系运算符“==”算是C语言编程过程中最易犯,且结果最为严重的问题。“==”在C语言之中为等于关系运算符,而“=”则是赋值语句。然而,“=”在其它的一些计算机语言之中则是关系运算符,因此,将分支结构语句之中“==”错写成“=”的情况时有发生,而这种错误较难被发现,其结果常常就是造成程序的崩溃。解决这类问题一个较为有效的方式是,在“等于”关系运算符是变量与常量比较的时,一定要记得将常量写在左边,在脑海中形成一个自然反应,例如要写if(a==1),即if(1==a)。而在“等于”关系运算符全是变量比较时,写成“!=”“不等于”关系运算符,则是最好反应,如此能够使这种问题发生的几率得到明显减少。

2 缓冲区溢出问题

缓冲区是内存的连续块,是用于给定类型的数据存放。如内存的拷贝函数这类C语言的基本函数,字符串的拷贝函数其自身不具备较高的安全性,这些标准函数不对目的内容及原内容的长度进行判定,在目的内容长度小于原内容长度之时,字符串过长造成将相邻存储单元覆盖的情况,就可能会发生,从而致使程序运行出现错误,造成程序崩溃。

针对此种情况,为了保证对数组在正确的范围内操作,可在编写的代码之中对全部对数组的读、写操作进行检查,但如此会在很大程度上影响到程序的性能。例如,时常会用错strcpy函数,从而带来缓冲区溢出的风险。因此,确保目标源容纳数据的空间充足,是执行strcpy函数前的必要步骤,不能忽视。此外,还有一个降低缓冲区溢出问题的办法,那就是限制源数据的存储空间,如此还能提高应用程序的效率。当然,strncpy函数是这个函数相对应的安全函数。但人们对这个函数的count值计算来源是它的常见错误,许多人会把目标缓冲区的字节总数作为count值,然而实际上作为count值的应该是留在缓冲区的字符数目。

3 指针的用法

指针是C语言的重要特色与精髓,是重要的数据类型。在C语言编程的过程中,使用指针能够合理、有效地节省存储空间,加快程序运行过程中的速度。指针有着许多种类,如字符指针变量、整数数组指针、整数指针变量、指向整数指针的指针以及整数指针数组等等。对于众多初学者而言,可能还未看完便失去信心了,且掌握难度较高。通常,在程序运行以后指针运用不当所导致的错误才会显现出来,错误的隐蔽性较强。常见的几个错误如下:

3.1 “野指针”

在C程序之中对一个指针变量进行了定义,却未将其初始化。若在之后操作此指针变量所指的存储空间,将会导致程序出现十分严重的错误。因为,在将指针变量定义之后,指针会随机地指向某个内存地址,这时候的指针所指的内存会将该单元之中原本就存在的数据覆盖掉,直接赋值操作,导致该数据丢失。如果指针所指向的是系统数据区,将会极大地影响系统运行,甚至是发生死机。对此,为了指针指向能够正确,在C语言编程的过程中,要第一时间将指针变量赋值。

3.2 栈溢出

当对一个子程序(子函数)进行调用时,用来现场的保存与恢复以及进行参数传递与局部变量的存放,即为栈的作用。而若在执行子函数的时候,错误地使用了其中的局部变量指针,就会出现栈溢出。

4 嵌套循环的问题

循环语句能够节省许多代码,让程序代码看起来不再那么复杂,变得十分简单,是一个十分好的结构。然而嵌套循环则更为的精妙非常,可以解决许多的问题,但由于外循环与内循环有着不一样的退出条件,如果缺乏全面的考虑,当某种异常情况发生时,就较易出现死循环的问题,进而发生不可挽回的后果。因此,若一个程序对可靠性有着非常高的要求,对于嵌套循环的使用就应尽量减少,就算有着足够把握的嵌套循环也是如此,不建议使用过多,应尽可能将其写成几个单独的循环。

5 结语

总之,C语言功能丰富,有着使用灵活、方便、表达能力强等优点,是当前应用最广泛的计算机语言之一,对编程人员而言熟练掌握这种程序设计工具十分必要。要想编写出优良的程序,就需对C语言的理论基础熟练理解,再加上在编程过程中地不断总结,持续地积累经验,做到应用自如提升编程的效率。希望本文之中所提出的这些问题,能够为其他的初学者提供一定的参考。

参考文献

[1]杨微微.计算机C语言程序的编辑分析[J].电脑知识与技术:学术交流,2016,12(10):106-108.

[2]沈继涛.计算机C语言编辑程序技巧论述[J].电子技术与软件工程,2016(16):254-254.

[3]王桂华.刍议Linux系统下的计算机C语言编程技巧[J].黑龙江科技信息,2016(34):163-163.

作者单位

山东省巨野县第一中学 山东省巨野县 274900

猜你喜欢

常见问题计算机
计算机操作系统
穿裙子的“计算机”
基于计算机自然语言处理的机器翻译技术应用与简介
计算机多媒体技术应用初探
信息系统审计中计算机审计的应用
初中班主任班级管理常见问题探讨
机械自动化设计与制造的常见问题分析
公路工程监理存在的问题和一些改进措施
Fresnel衍射的计算机模拟演示