C語(yǔ)言怎么樣,好學(xué)嗎?
c語(yǔ)言是面向過(guò)程的語(yǔ)言,目前主要用于嵌入式開(kāi)發(fā),因?yàn)樽烂骈_(kāi)發(fā)有更高效的面向?qū)ο箝_(kāi)發(fā)技術(shù)。面向過(guò)程是指語(yǔ)言的設(shè)計(jì)過(guò)程是按照事物的時(shí)間順序來(lái)開(kāi)發(fā)的,所以項(xiàng)目很大的時(shí)候很難維護(hù)。
1.設(shè)計(jì)目標(biāo)是提供一種編程語(yǔ)言,能夠以簡(jiǎn)單的編譯和處理低級(jí)內(nèi)存,只生成少量機(jī)器碼,運(yùn)行時(shí)不需要任何運(yùn)行環(huán)境的支持。與匯編語(yǔ)言相比,C語(yǔ)言易懂、易用、可讀性強(qiáng),易于調(diào)試、修改和移植,代碼質(zhì)量與匯編語(yǔ)言相當(dāng)。一般C語(yǔ)言代碼只比匯編語(yǔ)言代碼生成的目標(biāo)代碼效率低10%~20%。目前單片機(jī)性能大幅提升,內(nèi)存大幅增加。這種犧牲大大提高了開(kāi)發(fā)速度,降低了編程難度,完全值得。
2.主要特點(diǎn)是言簡(jiǎn)意賅,關(guān)鍵詞少,意思明確,容易理解和記憶。比如int是整數(shù),char是字符,float等等。
運(yùn)算符豐富的C語(yǔ)言包含了34個(gè)運(yùn)算符,將賦值、圓括號(hào)等作為運(yùn)算符處理,使得C程序的表達(dá)式類型和運(yùn)算符類型非常豐富。而且操作規(guī)則沒(méi)有那么嚴(yán)格,編程非常靈活。比如字符char可以不經(jīng)過(guò)轉(zhuǎn)換直接賦給整數(shù)int,枚舉類型可以直接賦給char或int等等。在高級(jí)語(yǔ)言中,這些操作不允許在沒(méi)有顯式轉(zhuǎn)換的情況下直接賦值。
在嵌入式系統(tǒng)的應(yīng)用中,地址的讀寫必然涉及到對(duì)寄存器的訪問(wèn)。c語(yǔ)言可以方便高效地實(shí)現(xiàn)這一功能。比如在ARM的CMSIS通用接口代碼中,所有的片內(nèi)寄存器都是用C的結(jié)構(gòu)定義的,對(duì)這些寄存器的訪問(wèn)和對(duì)變量的訪問(wèn)沒(méi)有區(qū)別。例如定義一個(gè)指向寄存器的變量,
uint32_tregData*(uint32_t*)0x08000000)
//讀取
x注冊(cè)表數(shù)據(jù)
//賦值
注冊(cè)表數(shù)據(jù)a
3.注意:C語(yǔ)言也是不斷發(fā)展變化的,所以有很多不同的版本,比如C89,C90,C95,C99等等。這就要求我們?cè)趯?shí)際應(yīng)用中要注意版本的兼容性。這一點(diǎn)很容易被新手忽略。例如,C99支持在函數(shù)中的任何地方定義變量,但早期版本不支持。
學(xué)什么都不難,只要努力,一定會(huì)有收獲。況且現(xiàn)在程序員那么多,說(shuō)明只要學(xué)習(xí),就一定要掌握。當(dāng)然,熟練程度取決于你做了多少項(xiàng)目。熟能生巧。對(duì)于初學(xué)者來(lái)說(shuō),理論聯(lián)系實(shí)際,多做練習(xí)并不難。
如何快速入門C語(yǔ)言?
如果你想更快的學(xué)會(huì)c#語(yǔ)言,有一個(gè)看似費(fèi)力卻是唯一的捷徑。第一,把C語(yǔ)言學(xué)好,看懂。指針,至少寫個(gè)鏈表,然后學(xué)c,其實(shí)CSSharp和cpp的底層沒(méi)什么區(qū)別,只是CSSharp更高級(jí)更現(xiàn)代。如果只學(xué)CSSharp,不會(huì)有那么高的功力。簡(jiǎn)單來(lái)說(shuō),就是任重道遠(yuǎn)。