計算機C語言編程問題分析論文

學識都 人氣:3.07W

摘要:隨着計算機技術的不斷髮展,在IT行業之中C語言的地位也是愈加重要。目前,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.