找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1801|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

c語言學(xué)習(xí)歷程——c語言概述

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:107189 發(fā)表于 2016-3-5 16:30 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
        2016來了,2015年底我報(bào)了一個(gè)編程比賽,2016年3月份開賽。
       在切入正題之前,先扯點(diǎn)題外話吧。先自我介紹一下吧,我叫李曉登,外號(hào)拉登,愛好比較廣泛,當(dāng)然其中之一必須是編程了,忘記自己是什么時(shí)候出于什么原因喜歡上編程的了,我接觸編程已經(jīng)有2年了,這兩年來,斷斷續(xù)續(xù)地學(xué)了些Java,也做了些東西,但是都覺得不過癮,可能是由于我不是科班的吧,學(xué)習(xí)的路上,常常會(huì)由于一些事情而被打斷,沒能系統(tǒng)的學(xué)習(xí)編程方面的知識(shí),所以一直到現(xiàn)在我都覺得比較遺憾,于是,在寒假開始之前,我就暗自下定決心,寒假一定要系統(tǒng)地學(xué)習(xí)編程,既然要系統(tǒng)學(xué)習(xí)編程,那就學(xué)c吧,我也不知道我是因?yàn)槭裁炊龃藳Q定,但其中很現(xiàn)實(shí)的一個(gè)情況是,我報(bào)名了一個(gè)編程比賽,而那個(gè)比賽只讓用c和c++,個(gè)人對(duì)c++暫時(shí)沒興趣,所以就只能選擇c了。
        昨天正式開始學(xué)習(xí)c了,看的是譚浩強(qiáng)的書,看了他對(duì)c語言的概述。在此簡(jiǎn)單總結(jié)一下。
       首先是c語言的背景問題,c語言的老祖宗是ALGOL60語言(1960),ALGOL60語言的兒子是CPL語言(1963),CPL語言的兒子是BCPL語言(1967),BCPL語言的兒子是B語言(1971),B語言的兒子就是C語言(1973)了,C語言一出生,就跟UNIX攪合在一起,經(jīng)過若干年的發(fā)展,C語言就名震天下了,10年后,即1983年,美國(guó)國(guó)家標(biāo)準(zhǔn)化協(xié)會(huì)(ANSI)公布了第一個(gè)c語言標(biāo)準(zhǔn)草案,即C83,1989年,公布了一個(gè)完整的c語言標(biāo)準(zhǔn),即C89,1990,ISO公布了另一個(gè)c語言標(biāo)準(zhǔn)C90,據(jù)說跟c89沒什么區(qū)別,1999年,ISO公布了C99,但是好像沒有火起來,現(xiàn)在大家用的基本上還是C89。看來,計(jì)算機(jī)行業(yè)也并不是越新的技術(shù)越好使,也有類似釀酒行業(yè)般——越老越香醇的例子。
     然后說說c89的特點(diǎn)吧,大致可概括為6點(diǎn),一是簡(jiǎn)潔、靈活,二是數(shù)據(jù)類型與運(yùn)算符豐富,三是模塊化、結(jié)構(gòu)化,四是程序自由度較大,五是可以直接訪問物理內(nèi)存地址,最后是與匯編比起來,可移植性較好,且運(yùn)行效率不比匯編遜色很多。顯然這些優(yōu)點(diǎn)足以讓c語言大紅大紫了。
      然后說說具體c程序內(nèi)容吧,前面我說過c語言是模塊化的,為什么這么說呢,因?yàn)閏語言的結(jié)構(gòu)是以函數(shù)為單位的(函數(shù)是什么這里就不介紹了),c語言本身也提供了一個(gè)函數(shù)庫,可以讓我們輕松地控制計(jì)算機(jī),但是函數(shù)也是有版權(quán)的,所以需要特別注意一下,函數(shù)在調(diào)用前,一定要在頭文件中聲明,否則就會(huì)產(chǎn)生侵權(quán)問題,程序無法運(yùn)行下去了。其中函數(shù)中有一個(gè)很重要的角色,那就是main函數(shù),它是程序執(zhí)行的入口,一個(gè)項(xiàng)目中只能有一個(gè),也就是說,一個(gè)程序只能有一個(gè)執(zhí)行入口,要不然就會(huì)亂套了,當(dāng)然進(jìn)了這個(gè)入口后,可以再開很多門,產(chǎn)生許多分支,但是最外面只有一個(gè)可以進(jìn)去的門,產(chǎn)生分支的問題屬于多線程的范疇了,在此不去深究。那么函數(shù)有什么用呢,它就是用來處理數(shù)據(jù)的,處理完后,一般都會(huì)吐出一個(gè)東西出來,那就是返回值,當(dāng)然也有處理完后不吐東西的函數(shù),那就是沒有返回值的函數(shù)了,那么函數(shù)的組成是什么呢?一個(gè)函數(shù)由返回值類型、函數(shù)名、括號(hào)、形式參數(shù)、函數(shù)體組成,返回值類型就是c語言里的那些數(shù)據(jù)類型,無返回值的用void表示,函數(shù)名由函數(shù)的功能決定,括號(hào)是用來起標(biāo)識(shí)作用的,括號(hào)里面放的是形式參數(shù),用來給函數(shù)傳遞數(shù)據(jù)的,函數(shù)體里面就是用來存放我們的命令的,各種控制語句和變量都可以往里面擱,你想要他干什么,你就往里面寫什么,當(dāng)然你要寫得計(jì)算機(jī)能夠讀懂,否則就會(huì)報(bào)一堆錯(cuò),談到報(bào)錯(cuò),就說說調(diào)錯(cuò)吧,一般的編程工具都有報(bào)錯(cuò)功能,告訴你什么地方出了什么錯(cuò)誤,但是是用英文表達(dá)的,所以大家還得學(xué)好英語,否則看不懂了,這里需要特別注意的是,大部分編輯器在報(bào)告行數(shù)的時(shí)候,是以分號(hào)為準(zhǔn)的,就是說如果一條語句寫成了兩行,編輯器就只把它當(dāng)成一行,所以造成最后編輯器告訴你出錯(cuò)的那一行并沒有出錯(cuò),反而是鄰近的行數(shù)出錯(cuò)了,所以大家一定要注意上下行有沒有出錯(cuò),不要局限于報(bào)錯(cuò)的那一行。
       最后就是程序調(diào)試的問題,我個(gè)人遇到一個(gè)問題,就是寫了這樣一條語句scanf("%d,%d",&a,&b),然后我在調(diào)試的時(shí)候給a、b賦值的時(shí)候并沒有加上逗號(hào),結(jié)果老是運(yùn)行出亂七八糟的結(jié)果,我當(dāng)時(shí)被弄傻了,以為是程序是寫錯(cuò)了,但是編譯器又沒報(bào)任何錯(cuò)誤和警告,我檢查程序也覺得沒錯(cuò),弄了好久,終于在高人的指點(diǎn)下搞懂了,這里也驗(yàn)證了一個(gè)道理,即程序不怕出邏輯錯(cuò)誤和語法錯(cuò)誤,就怕出調(diào)試錯(cuò)誤。因?yàn)檫@種錯(cuò)誤是隱藏的。還有一個(gè)問題就是c語言中的for循環(huán)中的循環(huán)變量最好是在外部聲明(Java常常寫在里面,所以我有點(diǎn)不習(xí)慣)因?yàn)槿绻麤]有在外部聲明,而for循環(huán)又出現(xiàn)在main函數(shù)的首部,那編譯器就會(huì)報(bào)錯(cuò),說for循環(huán)不能出現(xiàn)在main函數(shù)的首部,具體什么原因,我也搞不懂。希望高人指點(diǎn)。
       好了,今天到此結(jié)束,明天繼續(xù)。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表