- 相關(guān)推薦
計算機C語言編程問題分析論文
摘要:隨著計算機技術(shù)的不斷發(fā)展,在IT行業(yè)之中C語言的地位也是愈加重要。目前,C語言程序設(shè)計課程在一般學(xué)校之中都有開設(shè),對于未學(xué)過C語言編程的高中生學(xué)生而言,在學(xué)習(xí)過程之中C語言的有些知識掌握難度較大,錯誤較易發(fā)生。對此,本文針對計算機C語言編程過程中的一些常見問題,展開簡要的分析,并提出解決辦法,以期能對其他讀者起到一定參考。
【關(guān)鍵詞】計算機;C語言編程;常見問題
C語言作為一種面向過程的計算機語言,擁有著豐富的數(shù)據(jù)類型與運算符,它有著極強的處理能力與表現(xiàn)能力,能使各類復(fù)雜的數(shù)據(jù)結(jié)構(gòu)的運算得以實現(xiàn)。此外,它還能對內(nèi)存的物理地址進(jìn)行直接地訪問,開展基于bit位的操作。因為,C語言使對硬件的編程操作得以實現(xiàn),所以它同時具備著低級語言與高級語言的功能。與其它的一些高級語言相比,C語言程序的編寫更為簡潔,有著更加靈活的書寫形式,更便于使用,運算符的應(yīng)用靈活和表達(dá)式類型多樣化,使C語言能夠?qū)崿F(xiàn)許多在其它語言之后較難實現(xiàn)的復(fù)雜運算,其不僅在系統(tǒng)軟件的開發(fā)中十分適用,在應(yīng)用軟件的開發(fā)上也非常適合。為了編寫出簡潔、可靠、高效的C語言代碼,在C語言的編程過程中,既要對C語言的基本知識做到理解,還應(yīng)盡可能地掌握更多的編程經(jīng)驗,能夠?qū)ΤR姷膯栴}進(jìn)行處理。
1程序輸入時的問題
。1)沒有仔細(xì)對英文字母的大小寫進(jìn)行區(qū)別。大寫字母與小寫字母在C語言的編譯系統(tǒng)之中,是兩種完全不同的字符。為了增加可讀性,以示區(qū)別,在習(xí)慣上應(yīng)養(yǎng)成變量名用小寫,而符號常量名用大寫。
(2)未重視中英文輸入狀態(tài)。
(3)未能熟練掌握運算符。尤其是等于關(guān)系運算符“==”算是C語言編程過程中最易犯,且結(jié)果最為嚴(yán)重的問題。“==”在C語言之中為等于關(guān)系運算符,而“=”則是賦值語句。然而,“=”在其它的一些計算機語言之中則是關(guān)系運算符,因此,將分支結(jié)構(gòu)語句之中“==”錯寫成“=”的情況時有發(fā)生,而這種錯誤較難被發(fā)現(xiàn),其結(jié)果常常就是造成程序的崩潰。解決這類問題一個較為有效的方式是,在“等于”關(guān)系運算符是變量與常量比較的時,一定要記得將常量寫在左邊,在腦海中形成一個自然反應(yīng),例如要寫if(a==1),即if(1==a)。而在“等于”關(guān)系運算符全是變量比較時,寫成“!=”“不等于”關(guān)系運算符,則是最好反應(yīng),如此能夠使這種問題發(fā)生的幾率得到明顯減少。
2緩沖區(qū)溢出問題
緩沖區(qū)是內(nèi)存的連續(xù)塊,是用于給定類型的數(shù)據(jù)存放。如內(nèi)存的拷貝函數(shù)這類C語言的基本函數(shù),字符串的拷貝函數(shù)其自身不具備較高的安全性,這些標(biāo)準(zhǔn)函數(shù)不對目的內(nèi)容及原內(nèi)容的長度進(jìn)行判定,在目的內(nèi)容長度小于原內(nèi)容長度之時,字符串過長造成將相鄰存儲單元覆蓋的情況,就可能會發(fā)生,從而致使程序運行出現(xiàn)錯誤,造成程序崩潰。針對此種情況,為了保證對數(shù)組在正確的范圍內(nèi)操作,可在編寫的代碼之中對全部對數(shù)組的讀、寫操作進(jìn)行檢查,但如此會在很大程度上影響到程序的性能。例如,時常會用錯strcpy函數(shù),從而帶來緩沖區(qū)溢出的風(fēng)險。因此,確保目標(biāo)源容納數(shù)據(jù)的空間充足,是執(zhí)行strcpy函數(shù)前的必要步驟,不能忽視。此外,還有一個降低緩沖區(qū)溢出問題的辦法,那就是限制源數(shù)據(jù)的存儲空間,如此還能提高應(yīng)用程序的效率。當(dāng)然,strncpy函數(shù)是這個函數(shù)相對應(yīng)的安全函數(shù)。但人們對這個函數(shù)的count值計算來源是它的常見錯誤,許多人會把目標(biāo)緩沖區(qū)的字節(jié)總數(shù)作為count值,然而實際上作為count值的應(yīng)該是留在緩沖區(qū)的字符數(shù)目。
3指針的用法
指針是C語言的重要特色與精髓,是重要的數(shù)據(jù)類型。在C語言編程的過程中,使用指針能夠合理、有效地節(jié)省存儲空間,加快程序運行過程中的速度。指針有著許多種類,如字符指針變量、整數(shù)數(shù)組指針、整數(shù)指針變量、指向整數(shù)指針的指針以及整數(shù)指針數(shù)組等等。對于眾多初學(xué)者而言,可能還未看完便失去信心了,且掌握難度較高。通常,在程序運行以后指針運用不當(dāng)所導(dǎo)致的錯誤才會顯現(xiàn)出來,錯誤的隱蔽性較強。常見的幾個錯誤如下:
3.1“野指針”
在C程序之中對一個指針變量進(jìn)行了定義,卻未將其初始化。若在之后操作此指針變量所指的存儲空間,將會導(dǎo)致程序出現(xiàn)十分嚴(yán)重的錯誤。因為,在將指針變量定義之后,指針會隨機地指向某個內(nèi)存地址,這時候的指針?biāo)傅膬?nèi)存會將該單元之中原本就存在的數(shù)據(jù)覆蓋掉,直接賦值操作,導(dǎo)致該數(shù)據(jù)丟失。如果指針?biāo)赶虻氖窍到y(tǒng)數(shù)據(jù)區(qū),將會極大地影響系統(tǒng)運行,甚至是發(fā)生死機。對此,為了指針指向能夠正確,在C語言編程的過程中,要第一時間將指針變量賦值。
3.2棧溢出
當(dāng)對一個子程序(子函數(shù))進(jìn)行調(diào)用時,用來現(xiàn)場的保存與恢復(fù)以及進(jìn)行參數(shù)傳遞與局部變量的存放,即為棧的作用。而若在執(zhí)行子函數(shù)的時候,錯誤地使用了其中的局部變量指針,就會出現(xiàn)棧溢出。
4嵌套循環(huán)的問題
循環(huán)語句能夠節(jié)省許多代碼,讓程序代碼看起來不再那么復(fù)雜,變得十分簡單,是一個十分好的結(jié)構(gòu)。然而嵌套循環(huán)則更為的精妙非常,可以解決許多的問題,但由于外循環(huán)與內(nèi)循環(huán)有著不一樣的退出條件,如果缺乏全面的考慮,當(dāng)某種異常情況發(fā)生時,就較易出現(xiàn)死循環(huán)的問題,進(jìn)而發(fā)生不可挽回的后果。因此,若一個程序?qū)煽啃杂兄浅8叩囊,對于嵌套循環(huán)的使用就應(yīng)盡量減少,就算有著足夠把握的嵌套循環(huán)也是如此,不建議使用過多,應(yīng)盡可能將其寫成幾個單獨的循環(huán)。
5結(jié)語
總之,C語言功能豐富,有著使用靈活、方便、表達(dá)能力強等優(yōu)點,是當(dāng)前應(yīng)用最廣泛的計算機語言之一,對編程人員而言熟練掌握這種程序設(shè)計工具十分必要。要想編寫出優(yōu)良的程序,就需對C語言的理論基礎(chǔ)熟練理解,再加上在編程過程中地不斷總結(jié),持續(xù)地積累經(jīng)驗,做到應(yīng)用自如提升編程的效率。希望本文之中所提出的這些問題,能夠為其他的初學(xué)者提供一定的參考。
參考文獻(xiàn)
[1]楊微微.計算機C語言程序的編輯分析[J].電腦知識與技術(shù):學(xué)術(shù)交流,2016,12(10):106-108.
[2]沈繼濤.計算機C語言編輯程序技巧論述[J].電子技術(shù)與軟件工程,2016(16):254-254.
[3]王桂華.芻議Linux系統(tǒng)下的計算機C語言編程技巧[J].黑龍江科技信息,2016(34):163-163.
【計算機C語言編程問題分析論文】相關(guān)文章:
計算機C語言的論文致謝06-25
當(dāng)代文學(xué)語言問題反思與追問分析的論文09-11
Visual C#的Excel編程07-12
漢語言文學(xué)的應(yīng)用性問題分析論文09-15
c語言畢業(yè)論文開題報告09-27
計算機網(wǎng)絡(luò)工程安全問題分析論文08-15
素數(shù)問題在C語言教學(xué)中的應(yīng)用07-21
學(xué)習(xí)C語言指針應(yīng)注意的幾個問題10-24
旅游管理頂崗實習(xí)問題分析論文10-26