謝東來
摘 要:C語言是一種結構化的程序設計語言,其特點主要是盡量減少對硬件的操作,并具有很強的結構性而后可移植性以及功能性,利用C語言能夠進行編寫系統(tǒng)軟件以及二維、三維圖形等。但是由于C語言設計程序復雜,是一門比較難學的語言,在C語言軟件設計中很容易出現一些問題,下面我們就針對C語言軟件設計中存在的問題進行詳細的分析,以提高C語言軟件設計的能力。
關鍵詞:C語言;軟件設計;問題分析
中圖分類號:TP311.52 文獻標識碼:A 文章編號:1007-9599 (2013) 04-0000-02
1 引言
計算機技術的不斷更新和發(fā)展擴大了其應用的規(guī)模,并且軟件開發(fā)工具、語言和環(huán)境也不斷隨其提高。C語言作為計算機程序設計語言的一種,在大中小微型機上都有應用。C語言之所以適用于開發(fā)各種類型的軟件系統(tǒng),是因為它具有低級語言與高級語言的雙重特性,并具有很強的可移植性[1]。C語言又是一種比較難學的語言,我們要很好的掌握這門語言,就必須了解C語言軟件設計中常見的問題與有效地解決方案。
2 在軟件設計中C 語言中若干問題解析
2.1 數組
在編程設計中數組名后采用“[]”是常量表達式,其可以包括常量和符號常量,所以其不能對數組的大小進行動態(tài)定義。
2.2 指針
使用指針變量前要進行定義,不同于其他的普通變量,只能把地址存放其中而不能賦值。如果沒有給指針變量定位于某個內存單元中直接使用的話,會導致指針變量所指定的內存單元數據丟失、原有數據被覆蓋;如果指針變量所指定是內存單元剛好是系統(tǒng)內存數據區(qū),機器運行不正常或者死機的現象都可能出現。所以,一定要正確使用指針變量。
通過分析上述程序可以得知,上述程序中運用了帶參數的宏定義,其中程序中最容易出現錯誤的地方是用實參數K+1去替換形式參數a,因此程序就便成為了(K+1)*(K+1),所以結果就是16,很顯然這個結果是錯誤的,因為在計算的過程中,忽略了宏定義展開的過程。所以在宏定義展開的過程中,一定要注意其僅僅是簡單的替換,并且一定要在替換后計算。再如上述程序中,宏定義后面a*a是不帶括號的,所以我們在替換的過程中也不要帶括號,其替換后的形式應該是K+1*K+1,我們又知道k的值為3,所以此程序的結果應該是3+1*3+1=7,所以最后的結果應該是7[3].
3 C語言軟件設計中常見問題實例分析——以單片機C語言編程為例
(1)由于C語言具有優(yōu)良的程序結構,在模塊化程序設計方面得到了廣泛的應用,而單片機正是應用了C語言這一優(yōu)勢,實現不同的模塊完成不同的功能,程序結構顯得非常清晰,并且很容易進行維護和調試。
(2)合理的選擇數據類型。就單片機中的C語言需要和程序存儲器資源結合起來盡管數據類型變得豐富起來,存在的問題是機器語言直接支持的數據類型是bit和char 等,這種數據類型只能生成較短的代碼,而浮點型、整型等數據類型在有一定的內部程序或內部函數的支持等情況下能生成較長的代碼[4]。在實際編程中,看起來很簡單的C語言生成的代碼卻很長。針對這一情況,我們一定要根據編程的實際情況合理的選擇數據類型,減少過長的代碼生成。
(3)算法設計問題。一般程序的設計應用C語言只需要考慮程序功能的實現,而單片機C語言還要考慮程序代碼的長短問題以及系統(tǒng)的硬件資源,有的時候不是代碼長度越短、程序算法越簡單越好,有的程序包含有子程序或函數,而他們可能生成很長的代碼,所以在不影響程序運行的情況下,可以盡量優(yōu)化算法[5]。
(4)數據存儲器的分配。在單片機中由于內部數據存儲器RAM僅僅有幾百字節(jié),如果想要擴展外部存儲器RAM將數據存儲量增大的情況下則將會導致硬件成本的增加,進而造成單片機系統(tǒng)更加復雜。并且由于訪問外部存儲器所需的代碼要比訪問內部的代碼多,因此提高內部數據存儲器的利用率是非常重要的。單片機系統(tǒng)的內部存儲器、壓縮棧以及內部堆棧、所有程序變量等都將使用內部存儲期RAM。因此在系統(tǒng)設計中采用C語言對程序進行連接時,C語言軟件設計中能夠將已經被其他程序段釋放的存儲器空間重新定義到另一個程序段的變量中進行使用,但是還應該注意的是只有局部變量中的動態(tài)變量才能被釋放6]。所以C語言軟件設計中應使用局部變量,以最大限度提高數據存儲器的使用率。
4 結束語
通過對C語言的特點、函數、比運算、指針等方面的問題以及單片機C 語言編程應注意的若干問題進行剖析,我們不僅了解了其常見的問題,而且探索出了一些有效的解決方案,為更好的應用C語言提供了很好的參考依據。對一門編程語言的熟悉掌握,不僅要學會用它的優(yōu)勢,更重要的是要注意其在細節(jié)上可能出現的問題以及如何采取有效的解決措施,這樣可以大大提高我們對一門編程語言的掌握程度。
參考文獻:
[1]胡世鋒,張海濤.用C語言實現DSP程序設計的新方法[J].河北北方學院學報(自然科學版),2009(03):120-122.
[2]唐潔,Pollawat Thanarungroj,劉晨等.Pinned OS/Services:A Case Study of XML Parsing on Intel SCC[J].Journal of Computer Science & Technology,2013(01):46-48.
[3]倪瑞曉.C語言編程技術的分析研究[J].計算機技術與發(fā)展,2009(12):140-142.
[4]趙冬梅,張賓.在Lab VIEW中調用Virsual C++的方法[J].河北北方學院學報(自然科學版),2005(02):85-86.
[5]余梓唐.C語言源程序的自動評判系統(tǒng)[J].計算機時代,2010(04):89-90.
[6]王夢,謝翠萍,韓成虎.C語言實驗教學中學生編程常見問題探析[J].中國電力教育,2010(12):146-148.
計算機光盤軟件與應用2013年4期