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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

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

溫馨提示

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

評論

0/150

提交評論