C語言視頻教程 譚浩強(qiáng)編,曾怡教授講解的!
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序制作、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了蘇尼特右免費(fèi)建站歡迎大家使用!
一共28課,一共1.74G,用迅雷下,挺快的,我就在看,打開要用科建播放器下載地址(華軍軟件園:
太平洋軟件: )
千鋒Mars老師Java語言教程-2013年版,史上最牛java培訓(xùn)視頻百度網(wǎng)盤免費(fèi)資源在線學(xué)習(xí)
鏈接:
提取碼: vwi9 ? ?千鋒Mars老師Java語言教程-2013年版,史上最牛java培訓(xùn)視頻 千鋒-java語言教程-43_類集框架(三).mp4 千鋒-java語言教程-42_類集框架(二).mp4 千鋒-java語言教程-41_類集框架(一).mp4 千鋒-java語言教程-40_Java當(dāng)中的數(shù)組.mp4 千鋒-java語言教程-39_深入同步語法.mp4 千鋒-java語言教程-38_Java當(dāng)中的線程(三).mp4 千鋒-java語言教程-37_Java當(dāng)中的線程(二).mp4 千鋒-java語言教程-36_Java當(dāng)中的線程(一).mp4 千鋒-java語言教程-35_內(nèi)部類和匿名內(nèi)部類.mp4 千鋒-java語言教程-34_Java當(dāng)中的IO(三).mp4 千鋒-java語言教程-33_Java當(dāng)中的IO(二).mp4 千鋒-java語言教程-32_Java當(dāng)中的IO(一).mp4 千鋒-java語言教程-31_Java當(dāng)中的異常(二).mp4 千鋒-java語言教程-30_Java當(dāng)中的異常(一).mp4?
表達(dá)方式與以往數(shù)學(xué)學(xué)習(xí)中不同(如運(yùn)算符等),這就要求不氣餒,不明白的地方多問多想,鼓足勇氣進(jìn)行學(xué)習(xí),待學(xué)完后面的章節(jié)知識(shí),前面的問題也就迎刃而解了,這一方面我感覺是我們同學(xué)最欠缺,大多學(xué)不好的就是因?yàn)橐婚_始遇到困難就放棄,曾經(jīng)和好多同學(xué)談他的問題,回答是聽不懂、不想聽、放棄這樣三個(gè)過程,我反問,這節(jié)課你聽過課嗎?回答又是沒有,根本就沒聽過課,怎么說自己聽不懂呢?相應(yīng)的根本就沒學(xué)習(xí),又談何學(xué)的好?
學(xué)習(xí)C語言始終要記住“曙光在前頭”和“千金難買回頭看”,“千金難買回頭看”是學(xué)習(xí)知識(shí)的重要方法,就是說,學(xué)習(xí)后面的知識(shí),不要忘了回頭弄清遺留下的問題和加深理解前面的知識(shí),這是我們學(xué)生最不易做到的,然而卻又是最重要的。學(xué)習(xí)C語言就是要經(jīng)過幾個(gè)反復(fù),才能前后貫穿,積累應(yīng)該掌握的C知識(shí)。
那么,我們?nèi)绾螌W(xué)好《C程序設(shè)計(jì)》呢?
一.學(xué)好C語言的運(yùn)算符和運(yùn)算順序
這是學(xué)好《C程序設(shè)計(jì)》的基礎(chǔ),C語言的運(yùn)算非常靈活,功能十分豐富,運(yùn)算種類遠(yuǎn)多于其它程序設(shè)計(jì)語言。在表達(dá)式方面較其它程序語言更為簡(jiǎn)潔,如自加、自減、逗號(hào)運(yùn)算和三目運(yùn)算使表達(dá)式更為簡(jiǎn)單,但初學(xué)者往往會(huì)覺的這種表達(dá)式難讀,關(guān)鍵原因就是對(duì)運(yùn)算符和運(yùn)算順序理解不透不全。當(dāng)多種不同運(yùn)算組成一個(gè)運(yùn)算表達(dá)式,即一個(gè)運(yùn)算式中出現(xiàn)多種運(yùn)算符時(shí),運(yùn)算的優(yōu)先順序和結(jié)合規(guī)則顯得十分重要。在學(xué)習(xí)中,只要我們對(duì)此合理進(jìn)行分類,找出它們與我們?cè)跀?shù)學(xué)中所學(xué)到運(yùn)算之間的不同點(diǎn)之后,記住這些運(yùn)算也就不困難了,有些運(yùn)算符在理解后更會(huì)牢記心中,將來用起來得心應(yīng)手,而有些可暫時(shí)放棄不記,等用到時(shí)再記不遲。
先要明確運(yùn)算符按優(yōu)先級(jí)不同分類,《C程序設(shè)計(jì)》運(yùn)算符可分為15種優(yōu)先級(jí),從高到低,優(yōu)先級(jí)為1 ~ 15,除第2、13級(jí)和第14級(jí)為從右至左結(jié)合外,其它都是從左至右結(jié)合,它決定同級(jí)運(yùn)算符的運(yùn)算順序.
二.學(xué)好C語言的四種程序結(jié)構(gòu)
(1)順序結(jié)構(gòu)
順序結(jié)構(gòu)的程序設(shè)計(jì)是最簡(jiǎn)單的,只要按照解決問題的順序?qū)懗鱿鄳?yīng)的語句就行,它的執(zhí)行順序是自上而下,依次執(zhí)行。
例如;a = 3,b = 5,現(xiàn)交換a,b的值,這個(gè)問題就好像交換兩個(gè)杯子水,這當(dāng)然要用到第三個(gè)杯子,假如第三個(gè)杯子是c,那么正確的程序?yàn)椋?c = a; a = b; b = c; 執(zhí)行結(jié)果是a = 5,b = c = 3如果改變其順序,寫成:a = b; c = a; b = c; 則執(zhí)行結(jié)果就變成a = b = c = 5,不能達(dá)到預(yù)期的目的,初學(xué)者最容易犯這種錯(cuò)誤。 順序結(jié)構(gòu)可以獨(dú)立使用構(gòu)成一個(gè)簡(jiǎn)單的完整程序,常見的輸入、計(jì)算,輸出三步曲的程序就是順序結(jié)構(gòu),例如計(jì)算圓的面積,其程序的語句順序就是輸入圓的半徑r,計(jì)算s = 3.14159*r*r,輸出圓的面積s。不過大多數(shù)情況下順序結(jié)構(gòu)都是作為程序的一部分,與其它結(jié)構(gòu)一起構(gòu)成一個(gè)復(fù)雜的程序,例如分支結(jié)構(gòu)中的復(fù)合語句、循環(huán)結(jié)構(gòu)中的循環(huán)體等。
(2) 分支結(jié)構(gòu)
順序結(jié)構(gòu)的程序雖然能解決計(jì)算、輸出等問題,但不能做判斷再選擇。對(duì)于要先做判斷再選擇的問題就要使用分支結(jié)構(gòu)。分支結(jié)構(gòu)的執(zhí)行是依據(jù)一定的條件選擇執(zhí)行路徑,而不是嚴(yán)格按照語句出現(xiàn)的物理順序。分支結(jié)構(gòu)的程序設(shè)計(jì)方法的關(guān)鍵在于構(gòu)造合適的分支條件和分析程序流程,根據(jù)不同的程序流程選擇適當(dāng)?shù)姆种дZ句。分支結(jié)構(gòu)適合于帶有邏輯或關(guān)系比較等條件判斷的計(jì)算,設(shè)計(jì)這類程序時(shí)往往都要先繪制其程序流程圖,然后根據(jù)程序流程寫出源程序,這樣做把程序設(shè)計(jì)分析與語言分開,使得問題簡(jiǎn)單化,易于理解。程序流程圖是根據(jù)解題分析所繪制的程序執(zhí)行流程圖。
學(xué)習(xí)分支結(jié)構(gòu)不要被分支嵌套所迷惑,只要正確繪制出流程圖,弄清各分支所要執(zhí)行的功能,嵌套結(jié)構(gòu)也就不難了。嵌套只不過是分支中又包括分支語句而已,不是新知識(shí),只要對(duì)雙分支的理解清楚,分支嵌套是不難的。下面我介紹幾種基本的分支結(jié)構(gòu)。
①if(條件)
這種分支結(jié)構(gòu)中的分支體可以是一條語句,此時(shí)“”可以省略,也可以是多條語句即復(fù)合語句。它有兩條分支路徑可選,一是當(dāng)條件為真,執(zhí)行分支體,否則跳過分支體,這時(shí)分支體就不會(huì)執(zhí)行。如:要計(jì)算x的絕對(duì)值,根據(jù)絕對(duì)值定義,我們知道,當(dāng)x=0時(shí),其絕對(duì)值不變,而x0時(shí)其絕對(duì)值是為x的反號(hào),因此程序段為:if(x0) x=-x;
②if(條件)
else
這是典型的分支結(jié)構(gòu),如果條件成立,執(zhí)行分支1,否則執(zhí)行分支2,分支1和分支2都可以是1條或若干條語句構(gòu)成。如:求ax^2+bx+c=0的根
分析:因?yàn)楫?dāng)b^2-4ac=0時(shí),方程有兩個(gè)實(shí)根,否則(b^2-4ac0)有兩個(gè)共軛復(fù)根。其程序段如下:
d=b*b-4*a*c;
if(d=0)
{x1=(-b+sqrt(d))/2a;
x2=(-b-sqrt(d))/2a;
printf(“x1=%8.4f,x2=%8.4f\n”,x1,x2);
}
else
{r=-b/(2*a);
i =sqrt(-d)/(2*a);
printf(“x1=%8.4f+%8.4fi\n”r, i);
printf(“x2=%8.4f-%8.4fi\n”r,i)
}
③嵌套分支語句:其語句格式為:
if(條件1) ;
else if(條件2)
else if(條件3)
……
else if(條件n)
else
嵌套分支語句雖可解決多個(gè)入口和出口的問題,但超過3重嵌套后,語句結(jié)構(gòu)變得非常復(fù)雜,對(duì)于程序的閱讀和理解都極為不便,建議嵌套在3重以內(nèi),超過3重可以用下面的語句。
④switch開關(guān)語句:該語句也是多分支選擇語句,到底執(zhí)行哪一塊,取決于開關(guān)設(shè)置,也就是表達(dá)式的值與常量表達(dá)式相匹配的那一路,它不同if…else 語句,它的所有分支都是并列的,程序執(zhí)行時(shí),由第一分支開始查找,如果相匹配,執(zhí)行其后的塊,接著執(zhí)行第2分支,第3分支……的塊,直到遇到break語句;如果不匹配,查找下一個(gè)分支是否匹配。這個(gè)語句在應(yīng)用時(shí)要特別注意開關(guān)條件的合理設(shè)置以及break語句的合理應(yīng)用。
(3)循環(huán)結(jié)構(gòu):
循環(huán)結(jié)構(gòu)可以減少源程序重復(fù)書寫的工作量,用來描述重復(fù)執(zhí)行某段算法的問題,這是程序設(shè)計(jì)中最能發(fā)揮計(jì)算機(jī)特長(zhǎng)的程序結(jié)構(gòu),C語言中提供四種循環(huán),即goto循環(huán)、while循環(huán)、do ?Cwhile循環(huán)和for循環(huán)。四種循環(huán)可以用來處理同一問題,一般情況下它們可以互相代替換,但一般不提倡用goto循環(huán),因?yàn)閺?qiáng)制改變程序的順序經(jīng)常會(huì)給程序的運(yùn)行帶來不可預(yù)料的錯(cuò)誤,在學(xué)習(xí)中我們主要學(xué)習(xí)while、do…while、for三種循環(huán)。常用的三種循環(huán)結(jié)構(gòu)學(xué)習(xí)的重點(diǎn)在于弄清它們相同與不同之處,以便在不同場(chǎng)合下使用,這就要清楚三種循環(huán)的格式和執(zhí)行順序,將每種循環(huán)的流程圖理解透徹后就會(huì)明白如何替換使用,如把while循環(huán)的例題,用for語句重新編寫一個(gè)程序,這樣能更好地理解它們的作用。特別要注意在循環(huán)體內(nèi)應(yīng)包含趨于結(jié)束的語句(即循環(huán)變量值的改變),否則就可能成了一個(gè)死循環(huán),這是初學(xué)者的一個(gè)常見錯(cuò)誤。
在學(xué)完這三個(gè)循環(huán)后,應(yīng)明確它們的異同點(diǎn):用while和do…while循環(huán)時(shí),循環(huán)變量的初始化的操作應(yīng)在循環(huán)體之前,而for循環(huán)一般在語句1中進(jìn)行的;while 循環(huán)和for循環(huán)都是先判斷表達(dá)式,后執(zhí)行循環(huán)體,而do…while循環(huán)是先執(zhí)行循環(huán)體后判斷表達(dá)式,也就是說do…while的循環(huán)體最少被執(zhí)行一次,而while 循環(huán)和for就可能一次都不執(zhí)行。另外還要注意的是這三種循環(huán)都可以用break語句跳出循環(huán),用continue語句結(jié)束本次循環(huán),而goto語句與if構(gòu)成的循環(huán),是不能用break和 continue語句進(jìn)行控制的。
順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)并不彼此孤立的,在循環(huán)中可以有分支、順序結(jié)構(gòu),分支中也可以有循環(huán)、順序結(jié)構(gòu),其實(shí)不管哪種結(jié)構(gòu),我們均可廣義的把它們看成一個(gè)語句。在實(shí)際編程過程中常將這三種結(jié)構(gòu)相互結(jié)合以實(shí)現(xiàn)各種算法,設(shè)計(jì)出相應(yīng)程序,但是要編程的問題較大,編寫出的程序就往往很長(zhǎng)、結(jié)構(gòu)重復(fù)多,造成可讀性差,難以理解,解決這個(gè)問題的方法是將C程序設(shè)計(jì)成模塊化結(jié)構(gòu)。
(4)模塊化程序結(jié)構(gòu)
C語言的模塊化程序結(jié)構(gòu)用函數(shù)來實(shí)現(xiàn),即將復(fù)雜的C程序分為若干模塊,每個(gè)模塊都編寫成一個(gè)C函數(shù),然后通過主函數(shù)調(diào)用函數(shù)及函數(shù)調(diào)用函數(shù)來實(shí)現(xiàn)一大型問題的C程序編寫,因此常說:C程序=主函數(shù)+子函數(shù)。 因此,對(duì)函數(shù)的定義、調(diào)用、值的返回等中要尤其注重理解和應(yīng)用,并通過上機(jī)調(diào)試加以鞏固。
三.掌握一些簡(jiǎn)單的算法
編程其實(shí)一大部分工作就是分析問題,找到解決問題的方法,再以相應(yīng)的編程語言寫出代碼。這就要求掌握算法,根據(jù)我們的《C程序設(shè)計(jì)》教學(xué)大綱中,只要求我們掌握一些簡(jiǎn)單的算法,在掌握這些基本算法后,要完成對(duì)問題的分析就容易了。如兩個(gè)數(shù)的交換、三個(gè)數(shù)的比較、選擇法排序和冒泡法排序,這就要求我們要清楚這些算法的內(nèi)在含義
結(jié)語:當(dāng)我們把握好上述幾方面后,只要同學(xué)們能克服畏難、厭學(xué)、上課能專心聽講,做好練習(xí)與上機(jī)調(diào)試,其實(shí)C語言并不難學(xué)
C源程序的關(guān)鍵字---------------------------------------------------------------------------------------
所謂關(guān)鍵字就是已被C語言本身使用, 不能作其它用途使用的字。例如關(guān)鍵字不能用作變量名、函數(shù)名等
由ANSI標(biāo)準(zhǔn)定義的C語言關(guān)鍵字共32個(gè) :
auto double int struct break else long switch
case enum register typedef char extern return union
const float short unsigned continue for signed void
default goto sizeof volatile do if while static
根據(jù)關(guān)鍵字的作用,可以將關(guān)鍵字分為數(shù)據(jù)類型關(guān)鍵字和流程控制關(guān)鍵字兩大類。
1 數(shù)據(jù)類型關(guān)鍵字
A基本數(shù)據(jù)類型(5個(gè))
void :聲明函數(shù)無返回值或無參數(shù),聲明無類型指針,顯式丟棄運(yùn)算結(jié)果
char :字符型類型數(shù)據(jù),屬于整型數(shù)據(jù)的一種
int :整型數(shù)據(jù),通常為編譯器指定的機(jī)器字長(zhǎng)
float :?jiǎn)尉雀↑c(diǎn)型數(shù)據(jù),屬于浮點(diǎn)數(shù)據(jù)的一種
double :雙精度浮點(diǎn)型數(shù)據(jù),屬于浮點(diǎn)數(shù)據(jù)的一種
B 類型修飾關(guān)鍵字(4個(gè))
short :修飾int,短整型數(shù)據(jù),可省略被修飾的int。
long :修飾int,長(zhǎng)整形數(shù)據(jù),可省略被修飾的int。
signed :修飾整型數(shù)據(jù),有符號(hào)數(shù)據(jù)類型
unsigned :修飾整型數(shù)據(jù),無符號(hào)數(shù)據(jù)類型
C 復(fù)雜類型關(guān)鍵字(5個(gè))
struct :結(jié)構(gòu)體聲明
union :共用體聲明
enum :枚舉聲明
typedef :聲明類型別名
sizeof :得到特定類型或特定類型變量的大小
D 存儲(chǔ)級(jí)別關(guān)鍵字(6個(gè))
auto :指定為自動(dòng)變量,由編譯器自動(dòng)分配及釋放。通常在棧上分配
static :指定為靜態(tài)變量,分配在靜態(tài)變量區(qū),修飾函數(shù)時(shí),指定函數(shù)作用域?yàn)槲募?nèi)部
register :指定為寄存器變量,建議編譯器將變量存儲(chǔ)到寄存器中使用,也可以修飾函數(shù)形參,建議編譯器通過寄存器而不是堆棧傳遞參數(shù)
extern :指定對(duì)應(yīng)變量為外部變量,即標(biāo)示變量或者函數(shù)的定義在別的文件中,提示編譯器遇到此變量和函數(shù)時(shí)在其他模塊中尋找其定義。
const :與volatile合稱“cv特性”,指定變量不可被當(dāng)前線程/進(jìn)程改變(但有可能被系統(tǒng)或其他線程/進(jìn)程改變)
volatile :與const合稱“cv特性”,指定變量的值有可能會(huì)被系統(tǒng)或其他進(jìn)程/線程改變,強(qiáng)制編譯器每次從內(nèi)存中取得該變量的值
2 流程控制關(guān)鍵字
A 跳轉(zhuǎn)結(jié)構(gòu)(4個(gè))
return :用在函數(shù)體中,返回特定值(或者是void值,即不返回值)
continue :結(jié)束當(dāng)前循環(huán),開始下一輪循環(huán)
break :跳出當(dāng)前循環(huán)或switch結(jié)構(gòu)
goto :無條件跳轉(zhuǎn)語句
B 分支結(jié)構(gòu)(5個(gè))
if :條件語句
else :條件語句否定分支(與if連用)
switch :開關(guān)語句(多重分支語句)
case :開關(guān)語句中的分支標(biāo)記
default :開關(guān)語句中的“其他”分治,可選。
C 循環(huán)結(jié)構(gòu)(3個(gè))
for :for循環(huán)結(jié)構(gòu),for(1;2;3)4;的執(zhí)行順序?yàn)?-2-4-3-2...循環(huán),其中2為循環(huán)條件
do :do循環(huán)結(jié)構(gòu),do 1 while(2); 的執(zhí)行順序是 1-2-1...循環(huán),2為循環(huán)條件
while :while循環(huán)結(jié)構(gòu),while(1) 2; 的執(zhí)行順序是1-2-1...循環(huán),1為循環(huán)條件
以上循環(huán)語句,當(dāng)循環(huán)條件表達(dá)式為真則繼續(xù)循環(huán),為假則跳出循環(huán)。
[編輯本段]新標(biāo)準(zhǔn)
在ANSI標(biāo)準(zhǔn)化后,C語言的標(biāo)準(zhǔn)在一段相當(dāng)?shù)臅r(shí)間內(nèi)都保持不變,盡管C++繼續(xù)在改進(jìn)。(實(shí)際上,Normative Amendment1在1995年已經(jīng)開發(fā)了一個(gè)新的C語言版本。但是這個(gè)版本很少為人所知。)標(biāo)準(zhǔn)在90年代才經(jīng)歷了改進(jìn),這就是ISO9899:1999(1999年出版)。這個(gè)版本就是通常提及的C99。它被ANSI于2000年三月采用。
在C99中包括的特性有:
對(duì)編譯器限制增加了,比如源程序每行要求至少支持到 4095 字節(jié),變量名函數(shù)名的要求支持到 63 字節(jié) (extern 要求支持到 31)
預(yù)處理增強(qiáng)了。例如:
宏支持取參數(shù) #define Macro(...) __VA_ARGS__
使用宏的時(shí)候,參數(shù)如果不寫,宏里用 #,## 這樣的東西會(huì)擴(kuò)展成空串。(以前會(huì)出錯(cuò)的)
支持 // 行注釋(這個(gè)特性實(shí)際上在C89的很多編譯器上已經(jīng)被支持了)
增加了新關(guān)鍵字 restrict, inline, _Complex, _Imaginary, _Bool
支持 long long, long double _Complex, float _Complex 這樣的類型
支持 : : % % %: %:%: ,等等奇怪的符號(hào)替代
支持了不定長(zhǎng)的數(shù)組。數(shù)組的長(zhǎng)度就可以用變量了。聲明類型的時(shí)候呢,就用 int a[*] 這樣的寫法。不過考慮到效率和實(shí)現(xiàn),這玩意并不是一個(gè)新類型。所以就不能用在全局里,或者 struct union 里面,如果你用了這樣的東西,goto 語句就受限制了。
變量聲明不必放在語句塊的開頭,for 語句提倡這么寫 for(int i=0;i100;++i) 就是說,int i 的聲明放在里面,i 只在 for 里面有效。(VC沒有遵守這條標(biāo)準(zhǔn),i 在 for 外也有效)
當(dāng)一個(gè)類似結(jié)構(gòu)的東西需要臨時(shí)構(gòu)造的時(shí)候,可以用 (type_name) 這有點(diǎn)像 C++ 的構(gòu)造函數(shù)
初始化結(jié)構(gòu)的時(shí)候現(xiàn)在可以這樣寫:
struct hehe[] = ;
struct hehe = // 3,4 是對(duì) .c,.d 賦值的
字符串里面,\u 支持 unicode 的字符
支持 16 進(jìn)制的浮點(diǎn)數(shù)的描述
所以 printf scanf 的格式化串多支持了 ll / LL (VC6 里用的 I64) 對(duì)應(yīng)新的 long long 類型。
浮點(diǎn)數(shù)的內(nèi)部數(shù)據(jù)描述支持了新標(biāo)準(zhǔn),這個(gè)可以用 #pragma 編譯器指定
除了已經(jīng)有的 __line__ __file__ 以外,又支持了一個(gè) __func__ 可以得到當(dāng)前的函數(shù)名
對(duì)于非常數(shù)的表達(dá)式,也允許編譯器做化簡(jiǎn)
修改了對(duì)于 / % 處理負(fù)數(shù)上的定義,比如老的標(biāo)準(zhǔn)里 -22 / 7 = -3, -22 % 7 = -1 而現(xiàn)在 -22 / 7 = -4, -22 % 7 = 6
取消了不寫函數(shù)返回類型默認(rèn)就是 int 的規(guī)定
允許 struct 定義的最后一個(gè)數(shù)組寫做 [] 不指定其長(zhǎng)度描述
const const int i; 將被當(dāng)作 const int i; 處理
增加和修改了一些標(biāo)準(zhǔn)頭文件, 比如定義 bool 的 stdbool.h 定義一些標(biāo)準(zhǔn)長(zhǎng)度的 int 的 inttypes.h 定義復(fù)數(shù)的 complex.h 定義寬字符的 wctype.h 有點(diǎn)泛型味道的數(shù)學(xué)函數(shù) tgmath.h 跟浮點(diǎn)數(shù)有關(guān)的 fenv.h。stdarg.h 里多了一個(gè) va_copy 可以復(fù)制 ... 的參數(shù)。time.h 里多了個(gè) struct tmx 對(duì) struct tm 做了擴(kuò)展
輸入輸出對(duì)寬字符還有長(zhǎng)整數(shù)等做了相應(yīng)的支持
相對(duì)于c89的變化還有
1、增加restrict指針
C99中增加了公適用于指針的restrict類型修飾符,它是初始訪問指針?biāo)笇?duì)象的惟一途徑,因此只有借助restrict指針表達(dá)式才能訪問對(duì)象。restrict指針指針主要用做函數(shù)變?cè)?,或者指向由malloc()函數(shù)所分配的內(nèi)存變量。restrict數(shù)據(jù)類型不改變程序的語義。
如果某個(gè)函數(shù)定義了兩個(gè)restrict指針變?cè)?,編譯程序就假定它們指向兩個(gè)不同的對(duì)象,memcpy()函數(shù)就是restrict指針的一個(gè)典型應(yīng)用示例。C89中memcpy()函數(shù)原型如下:
代碼: void *memcpy (void *s1, const void *s2, size_t size);
如果s1和s2所指向的對(duì)象重疊,其操作就是未定義的。memcpy()函數(shù)只能用于不重疊的對(duì)象。C99中memcpy()函數(shù)原型如下:代碼: void *memcpy(void *restrict s1, const void *restrict s2,size_t size);
通過使用restrict修飾s1和s2 變?cè)?,可確保它們?cè)谠撛椭兄赶虿煌膶?duì)象。
2、inline(內(nèi)聯(lián))關(guān)鍵字
內(nèi)聯(lián)函數(shù)除了保持結(jié)構(gòu)化和函數(shù)式的定義方式外,還能使程序員寫出高效率的代碼.函數(shù)的每次調(diào)用與返回都會(huì)消耗相當(dāng)大的系統(tǒng)資源,尤其是當(dāng)函數(shù)調(diào)用發(fā)生在重復(fù)次數(shù)很多的循環(huán)語句中時(shí).一般情況下,當(dāng)發(fā)生一次函數(shù)調(diào)用時(shí),變?cè)枰M(jìn)棧,各種寄存器內(nèi)存需要保存.當(dāng)函數(shù)返回時(shí),寄存器的內(nèi)容需要恢復(fù)。如果該函數(shù)在代碼內(nèi)進(jìn)行聯(lián)機(jī)擴(kuò)展,當(dāng)代碼執(zhí)行時(shí),這些保存和恢復(fù)操作旅游活動(dòng)會(huì)再發(fā)生,而且函數(shù)調(diào)用的執(zhí)行速度也會(huì)大大加快。函數(shù)的聯(lián)機(jī)擴(kuò)展會(huì)產(chǎn)生較長(zhǎng)的代碼,所以只應(yīng)該內(nèi)聯(lián)對(duì)應(yīng)用程序性能有顯著影響的函數(shù)以及長(zhǎng)度較短的函數(shù)
3、新增數(shù)據(jù)類型
_Bool
值是0或1。C99中增加了用來定義bool、true以及false宏的頭文件夾stdbool.h,以便程序員能夠編寫同時(shí)兼容于C與C++的應(yīng)用程序。在編寫新的應(yīng)用程序時(shí),應(yīng)該使用
stdbool.h頭文件中的bool宏。
_Complex and _Imaginary
C99標(biāo)準(zhǔn)中定義的復(fù)數(shù)類型如下:float_Complex; float_Imaginary; double_Complex; double_Imaginary; long double_Complex; long double_Imaginary.
complex.h頭文件中定義了complex和imaginary宏,并將它們擴(kuò)展為_Complex和_Imaginary,因此在編寫新的應(yīng)用程序時(shí),應(yīng)該使用stdbool.h頭文件中的complex和imaginary宏。
long long int
C99標(biāo)準(zhǔn)中引進(jìn)了long long int(-(2e63 - 1)至2e63 - 1)和unsigned long long int(0 - 2e64 - 1)。long long int能夠支持的整數(shù)長(zhǎng)度為64位。
4、對(duì)數(shù)組的增強(qiáng)
可變長(zhǎng)數(shù)組
C99中,程序員聲明數(shù)組時(shí),數(shù)組的維數(shù)可以由任一有效的整型表達(dá)式確定,包括只在運(yùn)行時(shí)才能確定其值的表達(dá)式,這類數(shù)組就叫做可變長(zhǎng)數(shù)組,但是只有局部數(shù)組才可以是變長(zhǎng)的.
可變長(zhǎng)數(shù)組的維數(shù)在數(shù)組生存期內(nèi)是不變的,也就是說,可變長(zhǎng)數(shù)組不是動(dòng)態(tài)的.可以變化的只是數(shù)組的大小.可以使用*來定義不確定長(zhǎng)的可變長(zhǎng)數(shù)組。
C語言學(xué)習(xí)從入門到精通的一套經(jīng)典視頻教程,本課程通過高清晰的視頻、概念詳解、實(shí)例精講、習(xí)題測(cè)試讓你很快的掌握C語言的相關(guān)知識(shí),并領(lǐng)略運(yùn)用到實(shí)例中去。在針對(duì)一些用戶認(rèn)為C語言比較難學(xué)的情況下,本課程從初中級(jí)用戶的角度出發(fā),進(jìn)行合理的內(nèi)容安排,突出學(xué)、練、用、鞏固相結(jié)合的特點(diǎn),以通俗易懂的語言,豐富多彩的實(shí)例,詳細(xì)介紹了使用C語言進(jìn)行程序開發(fā)應(yīng)該掌握的各方面知識(shí)。本課程主要給大家講解了C語言概述,算法,數(shù)據(jù)類型,運(yùn)算符與表達(dá)式,常用的數(shù)據(jù)輸入、輸出函數(shù),選擇結(jié)構(gòu)程序設(shè)計(jì),循環(huán)控制,數(shù)組,函數(shù),指針,結(jié)構(gòu)體和共用體,位運(yùn)算,預(yù)處理,模塊化編程,編程規(guī)范,C語言常見問題及分析,習(xí)題測(cè)試等內(nèi)容。所有知識(shí)都結(jié)合具體實(shí)例進(jìn)行介紹,涉及的程序代碼給出了詳細(xì)的講解,可以使讀者輕松領(lǐng)會(huì)C語言程序開發(fā)的精髓,快速提高開發(fā)技能。
課程內(nèi)容詳盡,實(shí)例豐富,非常適合作為單片機(jī)及編程初學(xué)者的學(xué)習(xí)課程,也可作為大中院校相關(guān)專業(yè)在校學(xué)生及畢業(yè)生的教學(xué)輔導(dǎo)課程、短期C語言培訓(xùn)課程,是C語言編程愛好者從入門到深入的經(jīng)典課程。
課程共分為15講,每節(jié)課的內(nèi)容大綱如下:
第1課 C語言概述
1、幾種常見的程序設(shè)計(jì)語言
2、C語言出現(xiàn)的歷史背景
3、C語言的特點(diǎn)
4、簡(jiǎn)單的C程序介紹
5、C程序的上機(jī)步驟
6、習(xí)題測(cè)試
第2課 程序的靈魂-算法
1、程序設(shè)計(jì)過程
2、算法的基本概念
3、算法的特征
4、算法的表示方法(流程圖)
5、結(jié)構(gòu)化程序設(shè)計(jì)方法
6、習(xí)題測(cè)試
第3課 C語言的數(shù)據(jù)類型
1、預(yù)備知識(shí)
2、C語言的數(shù)據(jù)類型
3、常量與變量
4、不同數(shù)據(jù)類型之間的轉(zhuǎn)換
5、運(yùn)算符號(hào)和表達(dá)
6、習(xí)題測(cè)試
第4課 C語言順序程序設(shè)計(jì)
1、C語句概述
2、賦值語句
3、數(shù)據(jù)的輸入輸出
4、字符數(shù)據(jù)輸入輸出
5、格式輸入輸出
6、順序程序舉例
7、習(xí)題測(cè)試
第5課 C語言選擇程序設(shè)計(jì)
1、關(guān)系運(yùn)算符和關(guān)系表達(dá)式
2、邏輯運(yùn)算符和邏輯表達(dá)式
3、if 語句---條件判斷
4、條件運(yùn)算符
5、switch 語句
6、選擇程序舉例
7、習(xí)題測(cè)試
第6課 C語言的循環(huán)控制
1、概述
2、goto語句及與if語句構(gòu)成循環(huán)
3、while語句
4、do …while語句
5、for語句
6、循環(huán)的嵌套
7、幾種循環(huán)的比較
8、break語句和contiune語句
9、程序舉例
10、習(xí)題測(cè)試
第7課 C語言數(shù)組
1、一維數(shù)組
2、二維數(shù)組及多維數(shù)組
3、字符數(shù)組和字符串
4、程序舉例
5、習(xí)題測(cè)試
第8課 函數(shù)
1、概述
2、函數(shù)定義的一般格式
3、函數(shù)的返回值
4、函數(shù)的調(diào)用
5、函數(shù)參數(shù)及其傳遞方式
6、函數(shù)的嵌套與遞歸調(diào)用
7、數(shù)組作為函數(shù)參數(shù)
8、變量的存儲(chǔ)屬性
9、內(nèi)部函數(shù)和外部函數(shù)
10、習(xí)題測(cè)試
第9課 C語言預(yù)處理命令
1、編譯預(yù)處理
2、宏定義
3、文件包含
4、條件編譯
5、習(xí)題測(cè)試
第10課 指針
1、指針的概念
2、指針變量
3、指針與數(shù)組
4、指針與字符串
5、指針與函數(shù)
6、返回指針值的函數(shù)
7、指針數(shù)組和多級(jí)指針
8、習(xí)題測(cè)試
第11課 結(jié)構(gòu)體與共用體
1、結(jié)構(gòu)類型與結(jié)構(gòu)變量的定義
2、結(jié)構(gòu)變量的引用與初始化
5、結(jié)構(gòu)數(shù)組
6、指向結(jié)構(gòu)類型數(shù)據(jù)的指針
7、用指針處理鏈表
8、共用體
9、枚舉類型
10、用typedef定義別名
11、程序舉例
12、習(xí)題測(cè)試
第12課 位運(yùn)算
1、位運(yùn)算概述
2、位運(yùn)算符的使用方法
3、習(xí)題測(cè)試
第13課 單片機(jī)C語言的模塊化編程
1、模塊化編程的優(yōu)點(diǎn)
2、C語言源文件(*.c)文件和頭文件(*.h)的的作用
3、模塊化編程設(shè)計(jì)步驟
4、程序?qū)嵗?/p>
5、模塊化程序的移植
6、習(xí)題測(cè)試
第14課 C語言編程規(guī)范
1、編碼規(guī)范概述
2、編程排版規(guī)范
3、編程注釋規(guī)范
4、命名規(guī)則
5、可讀性規(guī)范
6、變量與結(jié)構(gòu)規(guī)范
7、函數(shù)與過程規(guī)范
8、編程效率規(guī)范
9、質(zhì)量保證規(guī)范
10、宏規(guī)范
11、代碼編輯
12、編譯
13、審查
14、代碼測(cè)試
15、維護(hù)
16、習(xí)題測(cè)試
第15課 C語言編程常見出錯(cuò)問題及分析
1、C語言的一些基本概念
2、位(bit)和字節(jié)(byte)
3、變量和數(shù)據(jù)存儲(chǔ)
4、數(shù)據(jù)文件
5、字符串操作
6、數(shù)組
7、指針和內(nèi)存分配
8、函數(shù)
9、編譯預(yù)處理
10、標(biāo)準(zhǔn)庫(kù)函數(shù)
11、系統(tǒng)調(diào)用
12、可移植性
13、編程風(fēng)格和標(biāo)準(zhǔn)
14、程序的編寫和編譯
15、調(diào)試
《【1】復(fù)習(xí)視頻》百度網(wǎng)盤資源免費(fèi)下載
鏈接:
提取碼:5yu2
【1】復(fù)習(xí)視頻|全國(guó)計(jì)算機(jī)等級(jí)考試:二級(jí)公共基礎(chǔ)知識(shí)|全國(guó)計(jì)算機(jī)等級(jí)考試:二級(jí)Visual FoxPro數(shù)據(jù)庫(kù)程序設(shè)計(jì)|全國(guó)計(jì)算機(jī)等級(jí)考試:二級(jí)Visual Basic語言程序設(shè)計(jì)|全國(guó)計(jì)算機(jī)等級(jí)考試:二級(jí)MS Office|全國(guó)計(jì)算機(jī)等級(jí)考試:二級(jí)Java語言程序設(shè)計(jì)|全國(guó)計(jì)算機(jī)等級(jí)考試:二級(jí)C語言程序設(shè)計(jì)|全國(guó)計(jì)算機(jī)等級(jí)考試:二級(jí)C++|全國(guó)計(jì)算機(jī)等級(jí)考試:二級(jí)Access數(shù)據(jù)庫(kù)程序設(shè)計(jì)|全國(guó)計(jì)算機(jī)等級(jí)考試:二級(jí)公共基礎(chǔ)知識(shí).rar|全國(guó)計(jì)算機(jī)等級(jí)考試:二級(jí)MS Office.rar|數(shù)據(jù)庫(kù)和表_維護(hù)表-操作表.flv|數(shù)據(jù)庫(kù)和表_考點(diǎn)分析-建立表01.flv|數(shù)據(jù)庫(kù)和表_建立表02.flv|數(shù)據(jù)訪問頁_考點(diǎn)分析-數(shù)據(jù)訪問頁視圖-創(chuàng)建數(shù)據(jù)訪問頁.flv ?
網(wǎng)頁名稱:c語言的函數(shù)講解視頻教程 c語言程序視頻教學(xué)
標(biāo)題鏈接:http://jinyejixie.com/article26/dodppjg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、網(wǎng)站改版、定制網(wǎng)站、服務(wù)器托管、App設(shè)計(jì)、定制開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)