郝斌c語言視頻教程筆記.doc_第1頁
郝斌c語言視頻教程筆記.doc_第2頁
郝斌c語言視頻教程筆記.doc_第3頁
郝斌c語言視頻教程筆記.doc_第4頁
郝斌c語言視頻教程筆記.doc_第5頁
已閱讀5頁,還剩96頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

郝斌 c語言視頻教程為什么學(xué)習(xí) c語言: Fortran語言主要用于科學(xué)計(jì)算,在第三代語言中,以 1980年為分水嶺,分為結(jié)構(gòu)化和面向?qū)ο笳Z言。 Basic語言是 vb的前生,pascal語言一般是用于教學(xué)。 C語言是最重要的,其他的語言一般很少用了。結(jié)構(gòu)化的代表語言是 c語言。結(jié)構(gòu)化語言的數(shù)據(jù)和操作是分離的,導(dǎo)致在寫大項(xiàng)目的時(shí)候,會出現(xiàn)各種各樣莫名其妙的問題。在面向?qū)ο蟮恼Z言中 c+是最復(fù)雜的語言。由于 c+語言太復(fù)雜,sun公司對 c+進(jìn)行了改裝,產(chǎn)生了 java語言。而 c#是由微軟開發(fā)的,和 java相似,幾乎一模一樣。在高級語言的執(zhí)行速度上,c是最快的, c+其次,而 java和 c#是最后的。Java和 c#流行,主要的一個原因是可以跨平臺。 C語言的發(fā)展和過程:C語言的特點(diǎn):優(yōu)點(diǎn):代碼量小,速度快,功能強(qiáng)大。缺點(diǎn):危險(xiǎn)性高,開發(fā)周期長,可移植性弱。危險(xiǎn)性高:寫同一個程序,在 java中會報(bào)錯,而在 c中不會報(bào)錯,為什么呢,因?yàn)?c認(rèn)為程序你想怎么寫就怎么寫,c語言認(rèn)為你寫的程序不是很離譜,他都認(rèn)為你寫的這個程序有特殊的含義??梢灾苯油ㄟ^,而 java則不可以。開發(fā)周期長:c語言是面向過程的語言,面向過程的語言的特點(diǎn)就是在開發(fā)大項(xiàng)目的時(shí)候,很容易崩潰,現(xiàn)在市場上的語言分三塊 C/c+:單純的學(xué)習(xí) c是什么都做不了的。 Java C# 可移植性不強(qiáng):這是針對 java來說的,因?yàn)?java的可移植性太強(qiáng)了,所以就感覺說 c的可移植性不強(qiáng)。金山公司最主要是靠 wps辦公軟件來發(fā)展的。 Wps是 c語言開發(fā)的,三大系統(tǒng):windows,unix,linux Windows內(nèi)核是 c語言寫的,而外殼是 c+寫的。Java永遠(yuǎn)不可能寫操作系統(tǒng)。因?yàn)?java運(yùn)行速度太慢了。而 linux和 unix都是純 c寫的。操作系統(tǒng)控制了硬件,如果說操作系統(tǒng)的運(yùn)行速度慢,那么當(dāng)我們在運(yùn)行軟件的時(shí)候,運(yùn)行速度會更慢。為什么使用 c語言寫操作系統(tǒng)呢,首先是因?yàn)?c的運(yùn)行速度快,然后是因?yàn)?c可以直接控制硬件,而其他語言不可以。沒有指針的語言是不能直接訪問硬件的。 C語言的應(yīng)用領(lǐng)域:驅(qū)動一般是用 c和匯編來寫的。數(shù)據(jù)庫一般是用 c和 c+來寫的 C語言的重要性:病毒最基本的是要感染系統(tǒng),數(shù)據(jù)結(jié)構(gòu),c,c+這三門語言是必須要學(xué)習(xí)的。牛人牛語:怎樣學(xué)習(xí) c語言參考資料“王爽寫的 c+也很不錯學(xué)習(xí)的目標(biāo): C語言的關(guān)鍵字:C語言程序的格式:第二講:(14)c語言編譯知識 1. Cpu,內(nèi)存條,硬盤,顯卡,主板,顯示器之間的關(guān)系。 Cpu不能直接處理硬盤上的數(shù)據(jù),必須要先調(diào)入內(nèi)存中。 2. Hello,word程序是如何運(yùn)行起來的。 3.什么是數(shù)據(jù)類型數(shù)據(jù)類型就是數(shù)據(jù)的分類,可以分為 a:基本數(shù)據(jù)類型:整形整形 int -4 短整形 short int -2 長整形 long int -8 浮點(diǎn)型單精度浮點(diǎn)數(shù) float:存儲范圍小 -4 雙精度浮點(diǎn)數(shù) double:存儲范圍大 -8 字符 char:c語言中是沒有字符串的。-1 B:符合類型:就是把基本類型拼湊在一起。結(jié)構(gòu)體枚舉共用體什么是變量變量的本質(zhì)是內(nèi)存中一段存儲空間, 4. Cpu,內(nèi)存條,vc+6.0,操作系統(tǒng)之間的關(guān)系。 5.變量為什么必須初始(即賦值)所謂的初始化就是賦值的意思,軟件運(yùn)行與內(nèi)存關(guān)系(垃圾數(shù)據(jù)) 1.軟件在運(yùn)行前需要向操作系統(tǒng)申請存儲空間,在內(nèi)存空間足夠空閑時(shí),操作系統(tǒng)將分配一段內(nèi)存空間并將該外存中軟件拷貝一份存入該內(nèi)存空間中,并啟動該軟件運(yùn)行。 2.在軟件運(yùn)行期間,該軟件所占內(nèi)存空間不再分配給其他軟件。 3.當(dāng)該軟件運(yùn)行完畢后,操作系統(tǒng)將回收該內(nèi)存空間(注意:操作系統(tǒng)并不清空該內(nèi)存空間遺留下來的數(shù)據(jù)),以便再次分配給其他軟件使用。綜上所訴,一個軟件所分配到的空間中極可能存在著以前其他軟件使用過后的殘留數(shù)據(jù),這些數(shù)據(jù)被稱之為垃圾數(shù)據(jù),所以通常情況下我們?yōu)橐粋€變量,為一個數(shù)組,分配好存儲空間之前都要對該內(nèi)存空間初始化。 6.如何定義變量數(shù)據(jù)類型,變量名稱=賦予的值等價(jià)于數(shù)據(jù)類型變量名變量名 = 要賦予的值舉例子: Int I = 3;等價(jià)于 int i;I = 3; Int i,j;等價(jià)于 int i;int j; Int i,j=3 等價(jià)于 int i; int j;j=3 Int I =3, j = 5;等價(jià)于 int i; int j;I = 3;j = 5; 7.什么是進(jìn)制我們規(guī)定八進(jìn)制前面加 0(零),十六進(jìn)制前面加 0x。常用計(jì)數(shù)制對照表:Printf的基本用法: 8.常量在 c中是如何表示的當(dāng)個字符使用單引號括起來,多個字符串使用雙引號括起來。在 c中,默認(rèn)是 double類型的。在后面加 F表示當(dāng)做 float來處理。 9.常量是以什么樣的二進(jìn)制代碼存儲在我們的計(jì)算機(jī)中。編碼:整數(shù)是以補(bǔ)碼的形式轉(zhuǎn)換為二進(jìn)制代碼存儲在計(jì)算機(jī)中的,浮點(diǎn)數(shù)是以 ieee754標(biāo)準(zhǔn)轉(zhuǎn)換為二進(jìn)制代碼存儲在計(jì)算機(jī)中的。字符的本質(zhì)實(shí)際也是與整數(shù)的存儲方式相同。第三次課:代碼規(guī)范化可以參考林銳高質(zhì)量 c/c+編程 代碼的規(guī)范化非常的重要,是學(xué)習(xí)一門編程語言的基礎(chǔ)。代碼規(guī)范化的好處 1:整齊,別人和自己都容易看懂。 2:代碼規(guī)范了,代碼不容易出錯。 3:一般的程序可以分為三塊: a:定義變量 b:對變量進(jìn)行操作 c:輸出值什么是字節(jié)存儲數(shù)據(jù)的單位,并且是硬件所能訪問的最小單位。內(nèi)存中存儲的最小單位是字節(jié),但是硬件控制的時(shí)候不能精確到位,只能精確到字節(jié),是通過地址總線來控制的,而精確到位是通過軟件來控制的,叫做位運(yùn)算符來精確到位的。不同類型數(shù)據(jù)之間相互賦值的問題不同數(shù)據(jù)類型之間最好不要相互轉(zhuǎn)換。如果需要明白這個知識點(diǎn),那么需要明白補(bǔ)碼。什么是 ASCII碼以 char定義變量的時(shí)候,只能使用單引號括起一個字符才是正確的。在上圖中注釋的最后一樣是重復(fù)定義了 ch的值,是錯誤的,而下面的 ch = c是指把 c賦值給 ch,是正確的。上圖中輸出的值是 98 Ascll碼規(guī)定了 ch是以那個值去保存, ascii碼不是一個值,而是一種規(guī)定,規(guī)定了不同的字符是以那個整數(shù)值去表示。字符本質(zhì)上與整數(shù)的存儲方式相同【字符的存儲】基本的輸入和輸出函數(shù)的用法:第三次課 Printf()將變量的內(nèi)容輸出到顯示器上。四種用法輸什么是輸出控制符,什么是非輸出控制符輸出控制符包含如下:Printf為什么需要輸出控制符: 01組成的代碼可以表示數(shù)據(jù)也可以表示指令。必須要有輸出控制符告訴他怎么去解讀。01組成的代碼表示的是數(shù)據(jù)的話,那么同樣的 01代碼組合以不同的格式輸出就會有不同的輸出結(jié)果,所以必須要有輸出控制符。在上圖中,int x =47,如果前面加 0(零)表示的是八進(jìn)制,如果前面加 0x(零 x)則表示的是十六進(jìn)制,而在輸出的時(shí)候,則是 o(字母 o)表示八進(jìn)制, ox(字母 o, x)表示十六進(jìn)制。非輸出控制符:非輸出控制符在輸出的時(shí)候會原樣輸出。Scanf()通過鍵盤將數(shù)據(jù)輸入到變量中有兩種用法:示例:非輸入控制符:在輸入的時(shí)候也會原樣輸入。但是一般我們在使用 scanf的時(shí)候,我們一般都不使用非輸入控制符。給多個變量賦值:需要記住,非控制符需要原樣輸入。如何使用 scanf編寫出高質(zhì)量代碼運(yùn)算符:算術(shù)運(yùn)算符:加(+),減()乘(*)除(/)取余(%)關(guān)系運(yùn)算符: , =, , 關(guān)系邏輯賦值。取余的結(jié)果的正負(fù)只和被除數(shù)有關(guān)。第四節(jié)流程控制:什么是流程控制程序代碼執(zhí)行的順序。 流程控制的分類順序執(zhí)行選擇執(zhí)行定義:某些代碼可能執(zhí)行,可能不執(zhí)行,有選擇的執(zhí)行某些代碼。分類:if If最簡單的用法:如果想控制多個語句的執(zhí)行或者不執(zhí)行,那么需要使用 括起來。3.ifelse的用法: ifelseifelse的用法:C錯誤的 ifelseifelse語句:在上圖中,當(dāng)執(zhí)行到哈哈那句時(shí),下面的 else將會被算作另外一個語句來執(zhí)行,而在我們的 c語言中,沒有以 else開頭的語句。所以會出錯。 If實(shí)例:If常見的問題:變量的替換:求三個數(shù)字的大?。篊語言常見誤區(qū):素?cái)?shù):只能被 1和自己整除的數(shù),如 1,5,9等?;匚臄?shù):正著寫和倒著寫一樣的數(shù)。如 1221,121,等編程實(shí)現(xiàn)求一個十進(jìn)制數(shù)字的二進(jìn)制形式 : 求一個數(shù)字的每位是奇數(shù)的數(shù)字取出來組合形成的新數(shù)字。求一個數(shù)字到過來的數(shù)字。 1:如果不懂,那么就看答案??炊鸢冈谇?。沒錯誤了,在嘗試改。如何看懂一個程序: 1. 流程:2. 每個語句的功能: 3.試數(shù):對一些小算法的程序: 1. 嘗試自己編程結(jié)局。 2. 解決不了,看答案。 3. 關(guān)鍵是把答案看懂。 4. 看懂之后嘗試自己修改程序,且知道修改之后程序的不同輸出結(jié)果的含義。 5. 照著答案去敲 6. 調(diào)試錯誤 7. 不看答案,自己獨(dú)立把程序編出 8. 如果程序?qū)嵲谑菑氐谉o法了解,就把他背會??照Z句的問題:在上圖中,最終的結(jié)果會是 AAAA,BBBB,程序也不會報(bào)錯,為什么呢,因?yàn)樵诔绦驁?zhí)行的時(shí)候,會在;哪里認(rèn)為是一個空語句。也就是說,如果 if成立,那么執(zhí)行空語句。 If常見錯誤解析(重點(diǎn))上面這個程序是錯誤的,為什么呢,在該程序中,總的有 4個語句,而在以 else開頭的那個語句中是有錯誤的,因?yàn)樵?c語言中是沒有以 else開頭的這種語法。在上面這個程序中,最終的值是 AAAA,雖說后面的 31也滿足條件,但是當(dāng) 32滿足條件后,該 if語句就會終止,后面的語句是不會在執(zhí)行的。既然 7行要寫表達(dá)式,就要寫 if。循環(huán)的定義,分類。定義:某些代碼會被重復(fù)執(zhí)行。分類:for 在上圖中,先執(zhí)行 1,在執(zhí)行 2,2如果成立,標(biāo)志著循環(huán)成立,那么在執(zhí)行 4,最后在執(zhí)行 3,3執(zhí)行完后代表一次循環(huán)完成,然后在執(zhí)行 2.以此類推。1永遠(yuǎn)只執(zhí)行一次。 +i=i+1求 1-10的所有奇數(shù)的和:求 1-12之間的所有能被 3整除的數(shù)字之和:For所控制的語句:在上圖中,for默認(rèn)只能控制一個語句,但是如果要控制多個語句時(shí)候,那么需要使用把語句括起來。求 1+1/2+1/3.1/100的和在上圖中,重點(diǎn)是強(qiáng)制數(shù)據(jù)類型轉(zhuǎn)換也就是 (float)(i)那句:如果把 print那句換為下面這句會怎么樣呢:也是錯的,為什么呢,因?yàn)?i是整形,1也是整形,所以不管你怎么轉(zhuǎn)換也是整形啊,如果想要這樣寫的話,那么我們需要把 1改成 1.0也可以的。也就是:試數(shù)詳細(xì)步驟舉例:浮點(diǎn)數(shù)存?。呵?1-100之間所有奇數(shù)的和:求 1-100之間的奇數(shù)的個數(shù):求 1-100之間奇數(shù)的平均值:求 1-100之間的奇數(shù)之和,在求 1-100之間的偶數(shù)之和:多個 fou循環(huán)的嵌套使用:整體是兩個語句。上圖中,先執(zhí)行 1,在執(zhí)行 2,如果 2成立,執(zhí)行 4,在執(zhí)行 5,如果 5成立執(zhí)行 A,在執(zhí)行 6,在執(zhí)行 5,如果 5不成立,意味著里面的循環(huán)結(jié)束,然后執(zhí)行 3,在執(zhí)行 2,如果 2成立又執(zhí)行 4,在執(zhí)行 5,如果 5成立在執(zhí)行 6,在執(zhí)行 5,如果 5不成立,在執(zhí)行 3,在執(zhí)行 2,如果 2不成立,意味著本次循環(huán)結(jié)束,在執(zhí)行 B,在上圖中,需要注意的是,如果 2成立的話,那么每次 4都需要執(zhí)行。進(jìn)制之間的轉(zhuǎn)換:如 234為 5進(jìn)制,那么轉(zhuǎn)換成 10進(jìn)制是多少: 2x5x5+3x5+4的值就是轉(zhuǎn)換成的 10進(jìn)制。 234e是 16進(jìn)制,轉(zhuǎn)換成 2進(jìn)制是多少: 2x16x16x16+3x16x16+4x16+12的值就是轉(zhuǎn)換成 10進(jìn)制的值。注意上面的規(guī)律。那么把十進(jìn)制轉(zhuǎn)換成 r進(jìn)制呢,其實(shí)很簡單,就是把 10 進(jìn)制數(shù)除以 r,知道商是 0的時(shí)候。然后取余數(shù),余數(shù)倒序排列:瑣碎的運(yùn)算符:自增:自減:和自增一樣。三目運(yùn)算符:最終的輸出結(jié)果是 1. 逗號表達(dá)式:最終結(jié)果是 6. 上圖中,逗號是個順序點(diǎn),即所有的副作用必須在下個語句前生效,其最后結(jié)果為 1,j+2只是產(chǎn)生臨時(shí)值,并沒有把 j+2的值賦個 j。如果寫成 j+=2,那最后的值則變?yōu)?5. For的嵌套使用舉例:上例中輸出的結(jié)果是 9個哈哈,1個嘻嘻。在上圖中,整個程序分成 3個語句,輸出的結(jié)果是 3個嘿嘿,3個哈哈,1個嘻嘻。其結(jié)果是:While 1:執(zhí)行的順序: 2:與 for的相互比較:用 for來求 1-100之和:用 while實(shí)現(xiàn) 1-100之和。只需要把 for語句替換為: For和 while是可以相互轉(zhuǎn)換的,可以用下面的表達(dá)式來表示: While和 for在邏輯上完全等價(jià),但是 for在邏輯上更強(qiáng)。更容易理解,更不容易出錯。推薦多使用 for。3:while舉例:試數(shù):通過上面的試數(shù),應(yīng)該能很快的理解回文數(shù)的算法。4:什么時(shí)候使用 while,什么時(shí)候使用 for:沒法說,用多了就自然而然知道了 Dowhile 一元二次方程:Switch的用法:電梯程序:Case是程序的入口,當(dāng)進(jìn)入程序后,程序會從上往下執(zhí)行,如果有 break,那么會中斷程序,如果沒有,那么會一直執(zhí)行。Break的用法:在多層循環(huán)中,Break只能終止他最近的循環(huán)。在多層 switch中, break也是只能終止距離他最近的 switch。 Break只能用于循環(huán),不能用于 if。如果用于 if,必須要當(dāng)循環(huán)中嵌套 if的時(shí)候。 Continue的用法:上圖中,如果執(zhí)行 continue,那么 C,D將不會被執(zhí)行,會執(zhí)行 3. 在上圖中,如果執(zhí)行了 continue,那么后面的 C,D將不再執(zhí)行,而會去執(zhí)行表達(dá)式。數(shù)組:數(shù)組的使用:為什么需要數(shù)組 1:為了解決大量同類型數(shù)據(jù)的存儲和使用問題。 2:用數(shù)組可以模擬現(xiàn)實(shí)世界。 Int a25:一維數(shù)組,可以當(dāng)做一個線性結(jié)構(gòu)。 Int a86:可以當(dāng)做一個平面,意思是 8行 6列。有 48 個元素。 Int a345:可以當(dāng)做一個立體。 Int a3456:可以當(dāng)做一個四維空間。數(shù)組的分類一維數(shù)組怎樣定義一維數(shù)組: 為 n個變量分配存儲空間:數(shù)組分配的內(nèi)存空間是連續(xù)的。 所有的變量類型必須相同:數(shù)組不可能第一個元素是整形,第二個元素是浮點(diǎn)型。所有變量所占用的字節(jié)必須相等。例子: int 5有關(guān)一維數(shù)組的操作初始化:上圖中 a5前面如果沒有加上數(shù)據(jù)類型,那么這里的 a5不是指一個數(shù)組,其中的 5只的是下標(biāo)。上圖中,數(shù)組的 5個元素不是用 a來代表的,是用 a0,a1a4來代表的,所以說數(shù)組名 a代表的不是數(shù)組的 5個元素,數(shù)組的名字代表的是數(shù)組的第一個元素的地址。賦值把一個數(shù)組元素給全部倒過來:排序/小值倒置查找插入刪除二維數(shù)組:二維數(shù)組的初始化:輸出二維數(shù)組內(nèi)容:多維數(shù)組: 是否存在多維數(shù)組:不存在,因?yàn)閮?nèi)存是線性一維的,在內(nèi)存中是不分行,也不分列的。 N維數(shù)組可以當(dāng)做每個元素是 n-1維數(shù)組的一維數(shù)組。函數(shù):為什么需要函數(shù):避免了重復(fù)性操作。有利于程序的模塊化。什么叫做函數(shù)邏輯上:能夠完成特定功能的獨(dú)立的代碼塊。物理上:能夠接收數(shù)據(jù)【也可以不接收數(shù)據(jù)】,能夠?qū)邮盏臄?shù)據(jù)進(jìn)行處理【也可以不對數(shù)據(jù)進(jìn)行處理】,能夠?qū)?shù)據(jù)處理的結(jié)果返【也可以沒有返回值】。 總結(jié):函數(shù)是個工具,他是為了解決大量類似問題而設(shè)計(jì)的,函數(shù)可以當(dāng)做一個黑匣子。如何定義函數(shù)函數(shù)的返回值,函數(shù)的名字(函數(shù)的形參列表) 函數(shù)的執(zhí)行體 函數(shù)定義的本質(zhì):詳細(xì)描述函數(shù)之所以能夠?qū)崿F(xiàn)某個特定功能的具體方法。 return表達(dá)式的含義: Return是終止被調(diào)函數(shù),向主調(diào)函數(shù)返回表達(dá)式的值,如果表達(dá)式為空,則只終止函數(shù),不向被主函數(shù)返回任何值。 Break是用來終止循環(huán)和 switch的。而 return是用來終止函數(shù)的。 函數(shù)返回值的類型,也稱為函數(shù)的類型,因?yàn)槿绻瘮?shù)名前的返回值類型和函數(shù)執(zhí)行體中的 return表達(dá)式中表達(dá)式的類型不同的話,則最終函數(shù)返回值的類型以函數(shù)名前的返回值類型為準(zhǔn)。例:在上圖中,函數(shù)的返回值以函數(shù)前的數(shù)值類型為準(zhǔn)。函數(shù)的分類有參函數(shù)和無參函數(shù)。有返回值和無返回值。庫函數(shù)和用戶自定義函數(shù)。普通函數(shù)和主函數(shù)( main函數(shù)) 1:一個程序有且只有一個主函數(shù),主函數(shù)可以調(diào)用普 2:通函數(shù),普通函數(shù)不能調(diào)用主函數(shù)。 3:普通函數(shù)可以相互調(diào)用。 4:主函數(shù)是程序的入口,也是函數(shù)的出口。 5:值傳遞函數(shù)和地址傳遞函數(shù)。判斷一個數(shù)是否是素?cái)?shù):使用函數(shù)判斷一個數(shù)是否是素?cái)?shù):函數(shù)和程序的調(diào)用應(yīng)該注意的地方:函數(shù)的聲明:當(dāng)函數(shù)沒有返回值時(shí),那么規(guī)范的寫法是要在函數(shù)中寫明 void的。在上圖中,第一個 void表示沒有返回值,而第二個 void表示不接收形參,也就是函數(shù)不接收數(shù)據(jù)。如果想把函數(shù)卸載程序的后面,那么需要寫函數(shù)聲明:函數(shù)聲明的含義是告訴編譯器 f是個函數(shù)名。如果不加函數(shù)聲明,那么編譯器在編譯到 f的時(shí)候,不知道 f是個什么,如果加了函數(shù)聲明,那么編譯器編譯到 f的時(shí)候,就知道 f是個函數(shù)。需要注意的是,調(diào)用語句需要放在定義語句的后面,也就是說,定義函數(shù)的語句要放在調(diào)用語句的前面。如果函數(shù)調(diào)用卸載了函數(shù)定義的前面,則必須加函數(shù)前置聲明,函數(shù)前置聲明的作用是: 1:告訴編譯器即將可能出現(xiàn)的若干個字母代表的是一個函數(shù)。 2:告訴編譯器即將可能出現(xiàn)的若干個字母所代表的函數(shù)的形參和返回值的具體情況。 3:函數(shù)聲明必須是一個語句,也就是在函數(shù)聲明后需加分號。 4:對庫函數(shù)的聲明也就是系統(tǒng)函數(shù)。是通過 #include來實(shí)現(xiàn)的。形參和實(shí)參: 1:形參和實(shí)參個數(shù)是一一對應(yīng)的。2:形參和實(shí)參的位置也是一一對應(yīng)的。 3:形參和實(shí)參的數(shù)據(jù)類型需要相互兼容。如何在軟件開發(fā)中合理的設(shè)計(jì)函數(shù)來解決實(shí)際問題。求 1到某個數(shù)字之間的數(shù)是否是素?cái)?shù),并將他輸出:合理設(shè)計(jì)函數(shù) 1 合理設(shè)計(jì)函數(shù) 2:合理設(shè)計(jì)函數(shù) 3:合理的設(shè)計(jì)函數(shù) 4:合理設(shè)計(jì)函數(shù) 5:常用的系統(tǒng)函數(shù)和如何通過書籍來學(xué)習(xí)函數(shù): Turboc2.0實(shí)用大全機(jī)械工業(yè)出版社遞歸:棧:相當(dāng)于一個杯子,變量的作用域和存儲方式:全局變量和局部變量:局部變量:局部變量的使用范圍只能在本函數(shù)內(nèi)部使用。全部變量:全局變量和局部變量命名沖突的問題:在同一個范圍之內(nèi)不能定義兩個一樣的局部變量:在一個函數(shù)內(nèi)部,如果定義的局部函數(shù)的名字和全局變量名一樣時(shí),局部變量會屏蔽掉全局變量:上例中最終的輸出結(jié)果是 8,因?yàn)榫植孔兞堪讶肿兞拷o屏蔽掉了。指針:內(nèi)存的存儲是以一個字節(jié)為一個編號,也就是 8位合在一起給一個編號,不是 0,1就給編號。內(nèi)存分為很多個單元,每個單元就會分配一個編號。地址:內(nèi)存單元的一個編號。而指針和地址一個概念的。也就是說指針就是地址。普通變量:只能存放一個值。指針變量:同樣是一個變量,但是指針變量存放其他變量的地址。 *p代表的是 p所指向的那個變量。在上圖中*p和 i是同一個東西,但是*p和 p不是同一個東西。在上圖中,int * p是一個聲明,開頭的 int * 是他的數(shù)據(jù)類型。P是變量的名字。不能理解我定義了一個整形變量,這個整形變量的名字叫做 *p。所謂 int *類型,實(shí)際就是存放 int 變量地址的類型。普通變量沒地址,當(dāng)然不能指向。 *p代表的是以 p的內(nèi)容為地址的變量。解析:p的內(nèi)容是一個地址,在上圖中, p的內(nèi)容就是 i的地址,以 i的內(nèi)容為地址的變量當(dāng)然就是 i了。指針和指針變量:指針就是地址,地址就是指針。地址就是內(nèi)存單元的編號,指針變量:存放地址的變量。而指針只是一個值,這個值是內(nèi)存單元的一個編號。指針變量才是一個變量,他里面才可以存放數(shù)據(jù)。指針和指針變量是兩個不同的概念,但是需要注意的是,通常我們在敘述時(shí)會把指針變量簡稱為指針,實(shí)際他們含義并不一樣。指針的重要性:指針的分類:指針的定義: 地址:內(nèi)存單元的編號,是一個從 0開始的非負(fù)整數(shù)。范圍:cpu對內(nèi)存是通過控制、數(shù)據(jù)、地址三條總線來進(jìn)行控制的。控制:cup會先把內(nèi)存中的數(shù)據(jù)讀入,進(jìn)行處理后,在返回給內(nèi)存,然后內(nèi)存在把數(shù)據(jù)寫入硬盤。數(shù)據(jù):用于數(shù)據(jù)的傳輸,不管是把內(nèi)存中的數(shù)據(jù)發(fā)送給 cpu,還是把 cpu的數(shù)據(jù)寫如內(nèi)存條,都是由數(shù)據(jù)線來完成的,但是數(shù)據(jù)傳輸?shù)姆较騽t是由控制線來控制的。地址:地址線則是確定數(shù)據(jù)要寫入內(nèi)存中的那個單元。所謂的一個單元就是一個字節(jié)。一條地址總線能控制 2的 1次方,一般的機(jī)器有 32個地址線,最終能夠控制 2的 32個單元,而每個單元是八位,而最終我們的內(nèi)存能夠存儲 2的 32次方 x8位。則換算為 G的話,之中大小為 4G.那么地址總線的范圍則是 4G大。指針:指針就是地址,地址就是指針,指針變量就是存放內(nèi)存單元編號的變量。指針變量和指針是兩個不同的概念。指針的本質(zhì)就是一個操作受限的非負(fù)整數(shù)。指針不能進(jìn)行算術(shù)運(yùn)算。但是能相減。基本類型的指針:Int *p:p只能存放 int類型的地址。 P = &i:把 i的地址賦給 p。然后 p就指向了 i,*p就等于 i。其實(shí)就是 1:該語句保存了 i的地址。2:p保存了 i的地址,所以 p指向 i。3:p既然指向 i,*p就是 i。 p的內(nèi)容為地址的變量。 p是有指向的,p里面是個垃圾值, *p則是說以 p的內(nèi)容為地址的變量。因?yàn)椴恢?p的值是多少,所以不知道 *p到底代表的是那個變量。而 *p = i,i=5,最終的結(jié)果就是把 5賦給了一個所不知道的單元。上圖中,第一個 error是數(shù)據(jù)類型不符合,不能相互轉(zhuǎn)換。*q代表的是整形,因?yàn)?q代表的是以 q的地址為內(nèi)容的變量。而 p是地址( int *)類型。第二個 error 同樣有錯,因?yàn)?q沒有賦值。經(jīng)典指針程序-互換兩個數(shù)字: 1:先用函數(shù)來互換:最終的輸出結(jié)果沒有互換,因?yàn)楹瘮?shù)的 a,b已經(jīng)執(zhí)行完成,分配給內(nèi)存的空間已經(jīng)釋放了,所以最終 a,b 的值還是主函數(shù) a,b的值?;Q的是形參的 a,b。和主函數(shù)沒有關(guān)系。在上圖中,輸出的值也是沒有互換的,輸出的同樣是 3 ,5,需要注意的是,互換的只是 pq的內(nèi)容,局部函數(shù)變化了,但是主函數(shù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論