




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C 語(yǔ)言基礎(chǔ)教程 1. 字符串 ”a”b”表示由 a”b”組成的字符串;當(dāng)雙引號(hào)本身作為字符處理時(shí),前面要加一 個(gè)反斜線,以便與定界符的雙引號(hào)加以區(qū)分; 2. 字符常量存放在內(nèi)存中占一個(gè)字節(jié)的空間, 字符串常量存放在內(nèi)存中占有的字節(jié)個(gè)數(shù)是 字符個(gè)數(shù)加 1,由于每個(gè)字符串存放在內(nèi)存中都有一個(gè)終止符 0; 3. 獲得一個(gè)字符的函數(shù) getchar ; 4. 獲得一個(gè)字符串的函數(shù) gets ; 5. 標(biāo)準(zhǔn)格式輸入函數(shù) scanf ; 6. scanf 函數(shù)的格式說(shuō)明符如下所示: d-十進(jìn)制整數(shù); x- 十六進(jìn)制整數(shù); o-八進(jìn)制整數(shù); u-無(wú)符號(hào)十進(jìn)制整數(shù); f-小數(shù)表示的浮點(diǎn)數(shù); e-指數(shù)表示的浮
2、點(diǎn)數(shù); c-單個(gè)字符; s-字符 串; 7. int scanf “把握串 ”,參數(shù)表 ,參數(shù)表 是由一個(gè)或多個(gè)參數(shù)構(gòu)成, 多個(gè)參數(shù)使用時(shí)用逗 號(hào)分隔,每個(gè)參數(shù)用地址值表示; 8. 常用的輸出函數(shù): 1.輸出一個(gè)字符函數(shù) putchar ;2.輸出一個(gè)字符串函數(shù) puts ;3.標(biāo)準(zhǔn) 格式輸出函數(shù) printf ; 9. int printf “字符串 ”,參數(shù)表 ,在格式標(biāo)識(shí)符 %與格式說(shuō)明符之間可使用修飾符, 用來(lái) 限制輸出數(shù)據(jù)的寬度和對(duì)齊方式; 10. 數(shù)字 .數(shù)字 -小數(shù)點(diǎn)前面的數(shù)字用來(lái)表示輸出數(shù)據(jù)的最小域?qū)?它用來(lái)指出輸出數(shù)據(jù)的最 小寬度,小數(shù)點(diǎn)后面的數(shù)字用來(lái)表示輸出數(shù)據(jù)的精度,對(duì)浮
3、點(diǎn)數(shù)來(lái)講表示小數(shù)點(diǎn)后的位 數(shù),對(duì)字符串來(lái)講表示輸出字符串的最大個(gè)數(shù),并將超過(guò)的部分截掉,對(duì)整數(shù)來(lái)將表示 11. 12. 13. 輸出的最大位數(shù)超過(guò)部分被截去; (很少使用) l- 用于格式說(shuō)明符 dox 前邊表示長(zhǎng)整數(shù);用于 efg 前面表示雙精度浮點(diǎn)數(shù); -負(fù)號(hào)用來(lái)表示數(shù)據(jù)在域?qū)捴凶髮?duì)齊,如不用負(fù)號(hào),就表示右對(duì)齊; 在 IBM PC 的 16 位微機(jī)中,單精度浮點(diǎn)數(shù)占 4 個(gè)字節(jié)( 32 位)可供應(yīng) 7 位有效數(shù)字, 取值范疇在 10-38-1038 之間,雙精度浮點(diǎn)數(shù)占 8 個(gè)字節(jié)( 64 位),可供應(yīng) 15-16 位有效數(shù) 字; 14. 一個(gè)字符數(shù)組中存放的是否字符串,關(guān)鍵取決于給它賦值
4、或賦初值的情形,假如對(duì)一個(gè) 字符數(shù)組在賦值或賦初值時(shí)將字符 以0終止的字符串; 0 賦給了某個(gè)元素,就該字符數(shù)組存放的是一個(gè) 15. 求余運(yùn)算符的功能是舍掉兩整數(shù)相除的商,只取其余數(shù),當(dāng)兩個(gè)整數(shù)中有一個(gè)為負(fù)數(shù), 就依據(jù)下述規(guī)章處理:余數(shù) =被除數(shù) -除數(shù) *商; 16. 增 1 運(yùn)算符作用于一變量,可使該變量的值增 1,假如前綴作用于變量,就其表達(dá)式的 值為原變量值增 1,假如后綴作用于變量,其表達(dá)式的值為原變量的值; 17. 是用來(lái)表示指向結(jié)構(gòu) /聯(lián)合變量的指針的成員的; 18. 數(shù)組名本身是一個(gè)地址值了; 第 1 頁(yè),共 10 頁(yè)19. EOF 是一個(gè)字符常量,其值被定義為 -1; 當(dāng)運(yùn)算
5、出某個(gè)操作數(shù)的值后就可以確 20. 在包含 & 和 |運(yùn)算符的規(guī)律表達(dá)式的求值過(guò)程中, 定整個(gè)表達(dá)式的值,運(yùn)算便不再連續(xù)進(jìn)行; 21. switch 整型表達(dá)式 ,要求其表達(dá)式的值為 int 型數(shù),否就轉(zhuǎn)換成 int 型數(shù); case整常型 表達(dá)式 ,要求表達(dá)式用 int 型常量組成,不得含有變量,一般用數(shù)字或字符組成; 22. goto 語(yǔ)句最常見(jiàn)的用法一是用來(lái)與 if 語(yǔ)句構(gòu)成循環(huán)結(jié)構(gòu), 二是用來(lái)以多重循環(huán)最內(nèi)重一 次退到最外邊; 23. 在循環(huán)體中,遇到 break 語(yǔ)句,就退出該重循環(huán); 24. continue 語(yǔ)句的功能只是用在循環(huán)體中,執(zhí)行該語(yǔ)句就終止本次循環(huán),再去判定是否繼 續(xù)
6、下次循環(huán); 25. return 語(yǔ)句有兩種格式:不帶返回值格式和帶返回值格式;該語(yǔ)句用在被調(diào)用函數(shù)中, 在被調(diào)用函數(shù)中執(zhí)行到該語(yǔ)句時(shí),將終止對(duì)被調(diào)用函數(shù)的執(zhí)行,并把把握器返回給調(diào)用 函數(shù),連續(xù)執(zhí)行調(diào)用函數(shù)后邊的語(yǔ)句;在帶返回值的情形下,將 return 語(yǔ)句所帶的表達(dá) 式的值返回給調(diào)用函數(shù),作為調(diào)用函數(shù)的值; 26. 在實(shí)際應(yīng)用中,關(guān)于形參和實(shí)參的使用應(yīng)留意幾點(diǎn): 1.定義函數(shù)時(shí),所指定的形參 .數(shù)在 該函數(shù)被調(diào)用前是不被支配內(nèi)存單元的,只有在被調(diào)用時(shí),才給形參支配單元,并且賦 值,一旦調(diào)用終止,形參所占內(nèi)存單元被釋放; 2.函數(shù)調(diào)用時(shí)所用的實(shí)參是一個(gè)具有確 定值的表達(dá)式,調(diào)用時(shí)先運(yùn)算表達(dá)式
7、的值,再將其值傳遞給對(duì)應(yīng)的形參; 3.函數(shù)的形參 是屬于定義它的函數(shù)的局部變量,因此,答應(yīng)一個(gè)函數(shù)的形參和實(shí)參同名,它們?cè)趦?nèi)存 中占有不同的儲(chǔ)備單位; 相同; 4.函數(shù)調(diào)用要求形參和實(shí)參在個(gè)數(shù)上相等,并且對(duì)應(yīng)參數(shù)類型 27. C 語(yǔ)言中函數(shù)的定義不答應(yīng)嵌套,就是說(shuō)不答應(yīng)在函數(shù)中定義函數(shù); C 語(yǔ)言程序中如干 個(gè)函數(shù)都是平行的,獨(dú)立的,函數(shù)之間是通過(guò)調(diào)用聯(lián)系的,函數(shù)的調(diào)用是答應(yīng)嵌套的, 就說(shuō)說(shuō)在調(diào)用某個(gè)函數(shù)的過(guò)程中仍答應(yīng)調(diào)用其他函數(shù); 28. 并非全部的問(wèn)題都可接受遞歸調(diào)用的方法, 只有中意以下要求的問(wèn)題才可使用遞歸調(diào)用 方法來(lái)解決:能夠?qū)⒃械膯?wèn)題化為一個(gè)新的問(wèn)題,而新的問(wèn)題的解決方法與原有問(wèn)
8、題 的解決方法相同,按這一原就依次化分下去,最終化分出來(lái)的新的問(wèn)題可以解決; 29. 用遞歸函數(shù)編寫的程序執(zhí)行起來(lái)在時(shí)間和空間的開(kāi)銷上都比較大; 30. 語(yǔ)句標(biāo)號(hào)屬于函數(shù)級(jí);符號(hào)常量屬于文件級(jí); 31. 程序級(jí)是指作用范疇(即作用域)在整個(gè)程序內(nèi),包含該程序的全部文件;同樣,文件 級(jí)的是指作用范疇在定義它的文件中,往往是從定義時(shí)開(kāi)頭;函數(shù)級(jí)的是指作用范疇在 定義它的函數(shù)體內(nèi);程序段級(jí)是指作用域在定義它的分程序內(nèi); 32. 儲(chǔ)備類是指數(shù)據(jù)被存放的地方不同而進(jìn)行的分類; C 語(yǔ)言中, 有的變量可以被存在 CPU 的通用寄存器中,多數(shù)的數(shù)據(jù)是存在內(nèi)存中,內(nèi)存中的數(shù)據(jù)又被氛圍靜態(tài)儲(chǔ)備區(qū)和動(dòng)態(tài) 儲(chǔ)備區(qū);
9、變量按其作用域可分為全局變量和局部變量,按其壽命可分為靜態(tài)儲(chǔ)備變量和 動(dòng)態(tài)儲(chǔ)備變量; 33. C 語(yǔ)言規(guī)定變量的儲(chǔ)備類分為 4 種: 1.自動(dòng)儲(chǔ)備類變量( auto); 2.寄存器儲(chǔ)備類變量 第 2 頁(yè),共 10 頁(yè)(register); 3.外部類變量( extern) .4.靜態(tài)類變量 static ; 34. 自動(dòng)類變量的作用域是在定義它的函數(shù)體或分程序內(nèi),一旦退出了該函數(shù)體或分程序, 就是不行見(jiàn)的;這類變量的壽命是短的,它被存放在內(nèi)存的動(dòng)態(tài)儲(chǔ)備區(qū)內(nèi);每次進(jìn)入定 義它的分程序或函數(shù)體內(nèi)被動(dòng)態(tài)支配儲(chǔ)備區(qū)域,一旦退出該程序或函數(shù)體內(nèi),所占用的 內(nèi)存區(qū)域被釋放掉,即不存在了; 35. 寄存器類
10、變量的作用域是在定義它的函數(shù)體或分程序內(nèi),壽命是短的;這類變量與自動(dòng) 類變量的區(qū)分在于寄存器變量有可能被存放在 CPU 的通用寄存器中;如是就將大大提 高對(duì)數(shù)據(jù)的存取速度;定義寄存器變量時(shí),應(yīng)留意如下幾點(diǎn): 1.定義的寄存器變量的個(gè) 數(shù)不能太多,閑暇的通用寄存器數(shù)目是有限的; 2.由于通用寄存器數(shù)據(jù)長(zhǎng)度的限制,一 般定義為寄存器的數(shù)據(jù)類型為 charint 型;3.通常選擇使用頻率較高的變量被定義為寄存 器類,將有利于提高效率,如在多重循環(huán)程序的最內(nèi)重循環(huán)的循環(huán)變量定義為寄存器類 變量; 36. 外部類變量的作用域是整個(gè)程序,包括組成該程序的全部文件,外部類變量的作用域最 大,壽命是長(zhǎng)的,其被
11、存放在內(nèi)存的靜態(tài)儲(chǔ)備區(qū),某個(gè)程序的外部變量的壽命直到程序 終止才被釋放; 37. 函數(shù)之間傳遞信息有如下三種方式: 1.返回值方式,安全牢靠,但只能返回一個(gè)值; 2. 傳址調(diào)用方式,既安全又可傳遞多個(gè)值; 安全; 3.外部類變量方式,雖可傳遞多個(gè)值,但是不 38. 靜態(tài)類變量又分為內(nèi)部靜態(tài)類和外部靜態(tài)類兩種;內(nèi)部靜態(tài)類的作用域同于自動(dòng)類,即 在定義它的函數(shù)或分程序內(nèi)是可見(jiàn)的;同于外部類,這類變量被存放在內(nèi)存的靜態(tài)儲(chǔ)備 區(qū);這類變量被定義后,始終存在到程序終止才被釋放,外部靜態(tài)類變量是在定義它的 文件中,并且從定義開(kāi)頭; 39. 外部靜態(tài)類變量定義在函數(shù)體外,即在某個(gè)文件中,在文件后文件首或文件
12、尾都可以, 也可以在文件中間;但是它的作用域是從定義時(shí)起; 40. 外部類變量在引用前一般要進(jìn)行說(shuō)明,說(shuō)明的方法是在變量名前面加上說(shuō)明符 extern, 這種說(shuō)明可以放在函數(shù)體內(nèi),也可放在函數(shù)體外,有時(shí)引用外部類變量可以不說(shuō)明,但 在下面兩種情形下必需說(shuō)明: 1.在一個(gè)多文件程序中,某個(gè)文件中定義了外部類變量, 如要在另一個(gè)文件中引用,就引用前必需說(shuō)明; 2.在一個(gè)文件中,假如是先引用外部類 變量,后定義外部類變量,就引用前必需說(shuō)明; 41. 自動(dòng)類和寄存器類變量定義后在沒(méi)有賦值或賦初值之前,其值不行使用,是無(wú)意義的數(shù) int 型變 42. 據(jù);外部類和靜態(tài)類變量定義后在沒(méi)有賦初值或賦值之前,
13、它們有默認(rèn)值,對(duì) 量為 0,對(duì)浮點(diǎn)型變量為 ,對(duì) char 型變量為空; 全局變量是指作用域在文件級(jí)以上的,它包含外部類變量和外部靜態(tài)類變量;局部變量 是指作用域在函數(shù)級(jí)以下的,另外,函數(shù)的形參也屬于局部變量; 43. 內(nèi)部函數(shù)的只能在定義它的文件內(nèi)調(diào)用, 不能在一個(gè)文件內(nèi)調(diào)用同一程序中的另一個(gè)文 件中的內(nèi)部函數(shù);內(nèi)部函數(shù)的作用域是文件級(jí)的,而外部函數(shù)的作業(yè)域是程序級(jí)的; 44. 預(yù)處理功能包含宏定義,文件包含,條件編譯三部分;類型定義是通過(guò)使用類型定義語(yǔ) 句將已有類型定義成新的標(biāo)識(shí)符所代表的類型; 第 3 頁(yè),共 10 頁(yè)45. 預(yù)處理命令不同于 C 語(yǔ)言的語(yǔ)句, 它們具有如下特點(diǎn) :1.
14、多數(shù)預(yù)處理命令只是一種替代的 功能,這種替代是簡(jiǎn)潔的替換,而不進(jìn)行語(yǔ)法檢查; 2.預(yù)處理命令都是在通常的編譯之 前進(jìn)行的,編譯時(shí)已經(jīng)執(zhí)行完了預(yù)處理命令,即對(duì)預(yù)處理后的結(jié)果進(jìn)行編譯; 3.預(yù)處理 命令后面不加分號(hào); 4.凡是預(yù)處理命令都以井號(hào)( ”#”)開(kāi)頭; 5.多數(shù)預(yù)處理命令依據(jù)它 的功能而被放在文件開(kāi)頭為宜,但依據(jù)需要也可以放到文件的其他位置; 46. 宏定義分兩種,一種是簡(jiǎn)潔的宏定義,它不帶有參數(shù),另一種是帶參數(shù)的宏定義; 47. 簡(jiǎn)潔宏定義是定義一個(gè)標(biāo)識(shí)符(宏名)來(lái)代表字符串,其使用留意事項(xiàng): 1.宏名一般用 大寫字母,以便于與變量名區(qū)分; 2.宏定義的預(yù)處理功能中的一種命令,它不是語(yǔ)
15、句; 如行末加了分號(hào),就該分號(hào)將作為所定義的字符串的一部分來(lái)處理; 3.宏替換是一種簡(jiǎn) 單的替換,替換時(shí)不作語(yǔ)法檢查; 定義時(shí)起,到終止宏定義命令( 定義時(shí),可以引用已定義的宏4.宏定義中的宏的作用域?yàn)槎x該命令的文件,并從 #undef 標(biāo)識(shí)符 )為止; 5.宏定義可以嵌套,指在進(jìn)行宏 6.一般編譯系統(tǒng)對(duì)加有雙引號(hào)的字符串的宏名不予替 換; 7.一般編譯系統(tǒng)在宏替換時(shí),隱含一空格符,將前后兩部分分開(kāi); 48. 帶參數(shù)的宏定義的格式如下: #define (宏名) (參數(shù)表) (宏體) ,如 #define SQx x*x,a=SQx, 就 a=5*5 ; 49. 使用帶參數(shù)宏定義該留意的事項(xiàng)
16、: 1.宏定義時(shí),宏名與左圓括號(hào)之間不能顯現(xiàn)空格符, 否就空格符后將作為宏體的一部分; 2.宏體中,各參數(shù)上加括號(hào)是特別重要的; 3.帶參 數(shù)的宏定義與函數(shù)的區(qū)分: 1.定義形式上不同,宏定義通過(guò)預(yù)處理命令 define 來(lái)定義; 2.處理時(shí)間上不同,宏定義是在編譯預(yù)處理時(shí)處理的,而函數(shù)是在執(zhí)行時(shí)處理的; 3.處 理方式上不同,帶參數(shù)的宏定義進(jìn)行宏替換時(shí),用實(shí)參來(lái)代表形參,而函數(shù)調(diào)用時(shí)是將 實(shí)參的值賦給形參; 4.時(shí)間和空間上的開(kāi)銷不同,帶參數(shù)的宏定義是在通常的編譯之前 完成替換的, 它在該程序的目標(biāo)代碼的形成上并沒(méi)有影響, 函數(shù)調(diào)用是在執(zhí)行時(shí)進(jìn)行的, 接受函數(shù)調(diào)用的方式可以削減該程序的目標(biāo)代
17、碼,在空間開(kāi)銷上可以削減,但函數(shù)調(diào)用 要有額外時(shí)間上的開(kāi)銷; 5.類型要求上不同, 帶有參數(shù)的宏定義對(duì)形參的類型不必說(shuō)明, 它沒(méi)有類型的限制,而函數(shù)的形參在定義時(shí)必需進(jìn)行類型說(shuō)明; 50. 宏定義主要用于下述幾個(gè)方面: 1.符號(hào)常量的定義; 2.功能簡(jiǎn)潔,使用頻繁的情形下, 用帶參數(shù)的宏定義比用函數(shù)可以提高速度; 用宏定義; 3.多數(shù)情形下,為書寫簡(jiǎn)練,程序易讀而采 51. 文件包含命令是 C 語(yǔ)言程序常用的一個(gè)預(yù)處理命令,它的格式: #include 文件名 ,它 的功能就是將指定的被包含的內(nèi)容放置在文件包含命令顯現(xiàn)的地方, 一般寫在一個(gè)文件 的開(kāi)頭,被包含的 .h 文件中往往是一些該程序所
18、需要的一些說(shuō)明或定義,它包括符號(hào)常 量的定義,類型定義,帶參數(shù)的宏定義,數(shù)組,結(jié)構(gòu),聯(lián)合和枚舉的定義等等,它仍包 含外部變量的定義,函數(shù)的定義和說(shuō)明等; 52. 使用文件包含命令時(shí)應(yīng)留意事項(xiàng): 1.一個(gè)文件包含命令只能包含一個(gè)文件,如某個(gè)程序 需包含多個(gè)文件,就可使用多條文件包含命令,如: #include“xy.h”#include“mn.h”; 2.文件包含的定義可以嵌套,是指在一個(gè)被包含的文件中仍可以包含其他文件; 3.文件包 含命令中, #include ,表示所引用的被包含是系統(tǒng)供應(yīng)的; #include“文件名 ”, 表示所引用的被包含文件可能是用戶自己定義的;編程人員對(duì)自己定義的
19、被包含文件, 引用時(shí)使用雙引號(hào),而系統(tǒng)供應(yīng)的 .h 文件最好使用尖括號(hào),這樣查找可能快些; 4.為提 供程序的可移植性, 編程時(shí)先將一些在不同環(huán)境或條件下需要修改的量或需修改部分放 在一個(gè)被包含的文件中; 第 4 頁(yè),共 10 頁(yè)53. 條件編譯指的是對(duì)編譯的源程序的某種把握, 即依據(jù)不用的條件來(lái)把握源程序參加編譯 內(nèi)容,稱為條件編譯; 54. 條件編譯常用命令格式: 1.#ifdef 標(biāo)識(shí)符 #else #endif 該格式的 功能描述如下,當(dāng) 標(biāo)識(shí)符 被宏定義時(shí), 中的語(yǔ)句或命令參加編譯,否就 中的語(yǔ)句或命令參加編譯; 2.#ifndef 標(biāo)識(shí)符 #else #endif 該格式的功能是
20、:當(dāng) 標(biāo)識(shí)符 未被宏定義時(shí), 中的語(yǔ)句或命令參加編譯,否就 中的語(yǔ)句或命令參加編譯; 3.#if 表達(dá)式 #else #endif 該格式的功能是:當(dāng)表達(dá)式是非 0 值時(shí),就 參加編譯,否就 參加 編譯; 55. 56. 1.條件編譯可以用來(lái)提高程序的通用性; 2.條件編譯會(huì)給程序調(diào)試帶來(lái)便利; 3.使用條件 編譯替代 if 語(yǔ)句會(huì)削減目標(biāo)代碼的長(zhǎng)度; 類型定義指依據(jù)某種需要對(duì)已有的類型用一種新的類型名字來(lái)替代, 其定義語(yǔ)句格式如 下: typedef 已有類型說(shuō)明符 新類型名表 57. 類型定義語(yǔ)句在使用時(shí)應(yīng)留意如下事項(xiàng): 1.該語(yǔ)句只是對(duì)已有的類型定義一個(gè)新名; 2. 使用該語(yǔ)句時(shí),習(xí)慣將
21、新定義的類型名用大寫字母; 是指用該語(yǔ)句定義的新的類型名再用來(lái)定義新的類型; 3.類型定義可以嵌套,所謂嵌套, 4.常把使用該語(yǔ)句定義的數(shù)據(jù)類 型包含在某個(gè)頭文件中; 5.在使用中會(huì)看到 typedef 語(yǔ)句與 #define 有相像之處,但三者 實(shí)際不同; #define 在編譯的預(yù)處理完成,只是簡(jiǎn)潔的替換,而 typedef 語(yǔ)句在編譯時(shí)處 理,它不是替換; 58. 1.使用類型定義可以簡(jiǎn)化書寫,將一個(gè)復(fù)雜的類型定義成簡(jiǎn)潔的新類型名; 2.使用類型 定義會(huì)給一些變量帶來(lái)更多的有用信息; 時(shí)做類型檢查,從而增加安全性; 3.使用類型定義,用新類型定義的變量在編譯 59. 指針是用來(lái)存放某個(gè)變
22、量的地址值的,當(dāng)然被存放地址值的那個(gè)變量已經(jīng)定義過(guò),并且 被支配了確定的內(nèi)存地址值;一個(gè)指針存放了哪個(gè)變量的地址值,就說(shuō)該指針指向那個(gè) 變量; 60. 指針的類型是該指針?biāo)赶虻淖兞康念愋?而不是指針本身值的類型,指針本身值是內(nèi) 存的地址值,其類型自然是 int 型或 long 型; 61. 函數(shù)的地址值用該函數(shù)的函數(shù)名來(lái)表示,指向函數(shù)的指針可用它所指向的函數(shù)名來(lái)賦 值; 62. 結(jié)構(gòu)變量的指針用 & 運(yùn)算符加結(jié)構(gòu)變量名表示,結(jié)構(gòu)變量的成員的地址也用 & 運(yùn)算符加 結(jié)構(gòu)變量的成員名來(lái)表示; 63. 在 float m32 , *p13 , *p22 中, m 是一個(gè)二維數(shù)組名, p1 是一個(gè)一
23、維一級(jí)指針數(shù) 組名,所謂指針數(shù)組就是數(shù)組的元素為指針的數(shù)組;數(shù)組 一級(jí)指針; p2 是一個(gè)指向數(shù)組的指針,它指向一個(gè)每列有 p1 有 3 個(gè)元素,每個(gè)元素是 2 個(gè)元素的二維數(shù)組; 64. 65. 指向函數(shù)的指針表示如下: int *pf,pf 是一個(gè)指向函數(shù)的指針, 它指向的函數(shù)的返回值 為 int 型; 指針函數(shù)表示如下: int *pf,pf 是一個(gè)返回值為 int 型數(shù)的指針函數(shù),所謂 指針函數(shù)是 一種返回值為指針的函數(shù); 第 5 頁(yè),共 10 頁(yè)66. 給指針賦值有一種常用的方法,就是使用儲(chǔ)備治理函數(shù) malloc, 該函數(shù)的格式: void *mallocint size ,該函數(shù)
24、用來(lái)支配內(nèi)存地址的, size 用來(lái)表示所申請(qǐng)內(nèi)存大小的字節(jié)數(shù), 該函數(shù)支配的內(nèi)存地址值可用來(lái)存放所指定的任何類型變量的地址值, 該函數(shù)假如成功 支配了內(nèi)存地址,就返回一個(gè)地址值,否就,返回 NULL ( 0 地址),表示申請(qǐng)支配內(nèi)存 失??;如: char *s;s=char *malloc10*sizeofchar;, 通過(guò)調(diào)用系統(tǒng)供應(yīng)的 malloc 函數(shù), 申請(qǐng) 10*sizeofchar 個(gè)字節(jié)的內(nèi)存空間,如申請(qǐng)成功, s 將獲得一個(gè)地址,該地址值是內(nèi) 存中某個(gè)空間的首地址,如 s 的值為 NULL, 就申請(qǐng)失敗,沒(méi)有獲得內(nèi)存空間; 67. 指針賦值時(shí)留意事項(xiàng): 1.指針被定義后,只有
25、賦了值才能使用; 2.給指針賦值時(shí)確定要 留意類型的的一樣; 3.可將一個(gè)已賦值的指針賦給另一個(gè)同類型的指針; 4.暫時(shí)不用的 指針可以賦值 NULL ; 5.指針也可以被賦一個(gè)整型數(shù)值,但是使用這種賦值方法要特別 謹(jǐn)慎,對(duì)于內(nèi)存支配情形不清楚的人,最好不要作這樣的嘗試; 68. *作為單目運(yùn)算符是用來(lái)表示指針?biāo)赶蜃兞康闹?或者稱為指針?biāo)傅膬?nèi)容; 69. 一個(gè)指針可以加上或減去確定范疇內(nèi)的一個(gè)整數(shù),以此來(lái)轉(zhuǎn)變指針的地址值,需要留意 的是 p+不是簡(jiǎn)潔地把 p 的值加 1,而是將 p 的值加 1 倍它所指向的變量占用的內(nèi)存字 節(jié)數(shù); 70. 兩個(gè)指針相減運(yùn)算:在確定條件下,兩個(gè)指針可以相減,
26、而不是任意兩個(gè)指針都可以相 減;指向同一個(gè)數(shù)組的兩個(gè)不同元素的指針相減,就表示兩個(gè)指針相隔元素的個(gè)數(shù); 71. 任意毫無(wú)關(guān)聯(lián)的兩個(gè)指針進(jìn)行比較是毫無(wú)意義的; 指向同一個(gè)數(shù)組的兩個(gè)指針可以進(jìn)行 比較;假如兩個(gè)指向同一個(gè)數(shù)組的指針相等,就表示這兩個(gè)指針指向同一個(gè)元素; 72. 假如 p 是一個(gè)指針, p+1 表示指針加 1,而 intp+1 就表示地址加 1; 73. 數(shù)組元素的存取答應(yīng)兩種方式: 1.下標(biāo)方式; 2.指針?lè)绞?;為了提高效率?yīng)盡量使用指 針?lè)绞綖楹?;?shù)組名是一個(gè)常量指針; 74. 以 b35 為例,二維數(shù)組的元素各種表示歸結(jié): 1.下標(biāo)表示: bij ; 2.一級(jí)指針表示: *&b
27、00+5*i+j ; 3.行用下標(biāo)列用指針表示: *bi+j ; 4. 行用指針列用下標(biāo)表示: *b+ij ; 5.二級(jí)指針表示: *b+i+j ; 75. 依二維數(shù)組元素的表示方法類推, 三維數(shù)組有 9 種表示方法;以 c357 為例, 三維數(shù) 組元素可表示為: 1.行列用下標(biāo),組用指針表示, *bij+k ;2.行組用下標(biāo),列用指針 表示: *bi+jk 76. 字符串比較函數(shù) 1.strcmps1,s2;2.strncmps1,s2,n;參數(shù) s1,s2 可以是數(shù)組名,也可以 是指針名;后面函數(shù)執(zhí)行時(shí)只將 比較; s1 和 s2 字符串中前 n 個(gè)字符進(jìn)行比較,其余字符不作 77. 檢索
28、字符函數(shù) 1.strindexs,c ;2.strnindexs,c ,s 表示指定字符串的數(shù)組名或字符指針名, c 是一個(gè) char 變量,用來(lái)指定要檢索的字符;該函數(shù)返回一個(gè)指針,指示指定字符在字 符串中的位置,如不包含,就返回 NULL ;區(qū)分:后一個(gè)函數(shù)從右至左開(kāi)頭檢索; 78. 字符串連接函數(shù) 1.strcats1,s2; 2.strncats1,s2,n;執(zhí)行該函數(shù)將 s2 字符連接到 s1 字符 的尾部并去掉 n;區(qū)分: 后一個(gè)函數(shù)將 s2 字符串的前 n 個(gè)字符連接到 s1 字符串, 其余 丟棄;該函數(shù)返回一個(gè)指針,指向新字符串的首地址;留意:使用該函數(shù)時(shí), s1 必需有 足夠
29、大的空間 s2,越界不報(bào)錯(cuò)將造成數(shù)據(jù)紛亂; 第 6 頁(yè),共 10 頁(yè)79. 字符串復(fù)制函數(shù) 1.strcpys1,s2;2.strncpys1,s2,n;s1,s2 可以是字符數(shù)組名或字符指針 名, s2 也可以是字符串常量, n 為整型變量或常量;執(zhí)行該函數(shù)將 s2 的字符串復(fù)制到 s1 中, s1 原有的字符串被掩蓋,要求 s1 數(shù)組大小能容納 s2;區(qū)分:后一個(gè)函數(shù) s2 前 n 個(gè)字符復(fù)制到 s1,其余丟棄,返回新復(fù)制字符串首地址; 80. 指針數(shù)組定義格式: * ;指向一維數(shù)組的指針定義格式: ( *) ; 81. 82. 指向函數(shù)的指針定義格式: * ; int *pf , pf
30、是指向函數(shù)的 指針名,該指針?biāo)赶虻暮瘮?shù)的返回值是 int 型數(shù); 一個(gè)函數(shù)存放在內(nèi)存中的入口地址是用函數(shù)名表示的,類似于數(shù)組,因此,給指向函數(shù) 的指針賦值時(shí)只需用函數(shù)名;用指向函數(shù)的指針調(diào)用函數(shù)時(shí),格式為: *指針名 ; 83. 定義結(jié)構(gòu)體的結(jié)構(gòu)類型: struct 結(jié)構(gòu)成員說(shuō)明 ;結(jié)構(gòu)變量和指向結(jié)構(gòu)變 量的指針可以做結(jié)構(gòu)的成員, 但是,某類結(jié)構(gòu)的結(jié)構(gòu)變量可以是另一類結(jié)構(gòu)的結(jié)構(gòu)成員, 而不行說(shuō)本身結(jié)構(gòu)的結(jié)構(gòu)變量;指向結(jié)構(gòu)變量的指針可以是本身結(jié)構(gòu)的成員; 84. 85. 86. 87. 結(jié)構(gòu)變量的定義: struct ; 在定義結(jié)構(gòu)模式后,可以馬上定義結(jié)構(gòu)變量: struct 結(jié)構(gòu)成員說(shuō)明 ;
31、 結(jié)構(gòu)名,結(jié)構(gòu)成員名,結(jié)構(gòu)變量是三個(gè)不同的概念,答應(yīng)同名; 結(jié)構(gòu)變量的成員有兩種表示方法: 1.結(jié)構(gòu)變量的成員: .;2. 指向結(jié)構(gòu)變量的指針的成員: 1.-;2.* 指向結(jié) 構(gòu)變量指針名 .; 88. 可將一個(gè)結(jié)構(gòu)變量整個(gè)地賦給另一個(gè)結(jié)構(gòu)變量, 但是要求兩者是同一種結(jié)構(gòu)模式的結(jié)構(gòu) 變量; 89. 位段是一種壓縮信息的方法,它所使用的是一種結(jié)構(gòu)的數(shù)據(jù)形式;該方法是在結(jié)構(gòu)中定 義特殊的成員,該成員以位為單位定義長(zhǎng)度的;其定義格式如下: unsigned : ; 90. 使用位段應(yīng)留意的事項(xiàng): 1.位段在內(nèi)存中的支配方向與機(jī)器有關(guān);有的機(jī)器從高字節(jié)向 低字節(jié)支配,有的機(jī)器從低字節(jié)向高字節(jié)支配; 2
32、.在位段的同一結(jié)構(gòu)中仍可以包含不同 類型的其他數(shù)據(jù)類型項(xiàng); 3.在位段結(jié)構(gòu)中可以定義無(wú)名無(wú)名位段,它可以用來(lái)作為位段 的分隔; 4.長(zhǎng)度為 0 的位段用來(lái)使字邊界對(duì)齊,使用長(zhǎng)度為 0 的位段可以使下一個(gè)位段 從新的字開(kāi)頭; 5.一個(gè)位段不能跨過(guò)兩個(gè)字,只能存放在同一個(gè)字中;假如前面的幾個(gè) 位段幾乎占滿一個(gè)字, 空下來(lái)的不足以存放下一個(gè)位段時(shí), 該位段只好從下一個(gè)字開(kāi)頭; 6.不能構(gòu)造位段數(shù)組,也不能對(duì)位段進(jìn)行地址操作; 7.位段可以用整型格式輸出,位段 可在表達(dá)式中引用, 系統(tǒng)自動(dòng)將位段轉(zhuǎn)化為 int 型數(shù); 8.位段不能定義在聯(lián)合中, 也不能 作為函數(shù)的返回值; 91. 聯(lián)合與結(jié)構(gòu)很相像,區(qū)
33、分在與結(jié)構(gòu)是異址的,而聯(lián)合是同址的;枚舉在定義形式上跟結(jié) 構(gòu),聯(lián)合相像,但它卻是另一中類型,它是如干常量的集合; 92. 聯(lián)合變量中的成員共用一個(gè)內(nèi)存單元,即聯(lián)合變量的所以成員共用一個(gè)內(nèi)存地址值;因 第 7 頁(yè),共 10 頁(yè)此,在聯(lián)合變量中起作用的成員是最近一次被賦值的成員,由于一個(gè)聯(lián)合變量的全部成 員共用一個(gè)內(nèi)存地址,存入新的成員值時(shí),原先的成員值邊失去了意義; 93. 在賦初值時(shí),聯(lián)合變量只能給第一個(gè)成員賦初值,不能對(duì)聯(lián)合變量名賦值,不能用聯(lián)合 變量作函數(shù)的參數(shù),也不能用聯(lián)合變量作函數(shù)的返回值,只能用指向聯(lián)合變量的指針作 函數(shù)的參數(shù); 94. 枚舉模式的定義格式如下: enum ;枚舉表是
34、由如干個(gè)枚舉符構(gòu)成 的,多個(gè)枚舉符之間用逗號(hào) ,分隔; 枚舉符又稱枚舉元素或枚舉常量, 它是一種標(biāo)識(shí)符, 并且有確定的 int 型值; 95. 枚舉變量的定義格式如下: enum ;是由如干 個(gè)用逗號(hào)隔開(kāi)的枚舉變量名構(gòu)成的; 96. 定義后枚舉變量應(yīng)先賦值,然后再引用,否就沒(méi)有意義;枚舉變量應(yīng)被賦一個(gè)它所對(duì)應(yīng) 的枚舉符表中的一個(gè)枚舉符; 97. 不能直接給枚舉變量賦一個(gè)整型數(shù)值;如: enum daySun,Sat, day1,day2;day1 = 0; 這是錯(cuò)誤的;但 day1 = enum day 0; 這是正確的; 98. 在默認(rèn)情形下,枚舉表中枚舉符的值是從 0 開(kāi)頭的,后一個(gè)總是比
35、前面大 1.另外,在定 義枚舉格式時(shí),可以通過(guò)顯示賦值的方法確定枚舉符的值;如: enum daySun = 7,Sta = 6, ; 99. 使用枚舉變量時(shí)應(yīng)留意的事項(xiàng): 1.枚舉符不是整型變量,不能在程序中對(duì)它賦以數(shù)值; 2.枚舉變量一般用它所對(duì)應(yīng)的枚舉表中的枚舉符來(lái)賦值;假如用整型數(shù)來(lái)賦值,前面要 加上強(qiáng)制類型轉(zhuǎn)換符;輸出枚舉變量時(shí),要用輸出格式符 %d;3.枚舉變量可以進(jìn)行比較 運(yùn)算,比較時(shí)按其枚舉符所隱含的枚舉值進(jìn)行; 4.枚舉變量可以用作函數(shù)的參數(shù)或返回 值; 100. C 語(yǔ)言文件被稱為流式文件, 其特點(diǎn)是不分記錄或塊, 將文件看成是信息流或是看成一 個(gè)字符流 (文本文件) ,或
36、看成是一個(gè)二進(jìn)制流 (二進(jìn)制文件) ;文件的存取是以字符 (字 節(jié))為單位的,讀寫數(shù)據(jù)流的開(kāi)頭和終止受程序把握;任何一個(gè)文件都是以 EOF 終止, 最簡(jiǎn)潔的文件是只有終止符的空文件; 101. C 語(yǔ)言文件按存放設(shè)備分設(shè)備文件和磁盤文件;按數(shù)據(jù)組織形式分文本文件 ( ASCII 碼 文件)和二進(jìn)制文件;文本文件是按一個(gè)字節(jié)存放一個(gè)字符的 ASCII 碼來(lái)存放的;二進(jìn) 制文件是按數(shù)據(jù)在內(nèi)存中的儲(chǔ)備形式放到磁盤上的; 102. 文件指針是一種用來(lái)指向某個(gè)文件的指針; 假如說(shuō)某個(gè)文件指針指向某個(gè)文件, 就是該 文件指針指向某個(gè)文件放在內(nèi)存中的緩沖區(qū)的首地址; 103. 在文件操作的程序中,要使用 址
37、賦給文件指針;對(duì)文件的操作 FILE 來(lái)定義文件指針,并且將打開(kāi)的文件緩沖區(qū)的首地 (讀, 寫,關(guān)閉等) 都使用文件指針,而不使用文件名; 104. 讀寫指針是指當(dāng)一個(gè)文件被打開(kāi)后用來(lái)標(biāo)識(shí)讀寫文件位置的; 文件指針一旦被指向某個(gè) 文件,它的值是不會(huì)轉(zhuǎn)變的,直到該文件被關(guān)閉;而讀寫指針是當(dāng)某個(gè)文件被打開(kāi)時(shí), 它指向文件頭或文件尾(與打開(kāi)方式有關(guān)) 指針的位置; ,可以通過(guò)定位函數(shù)( fseek )來(lái)轉(zhuǎn)變讀寫 105. 標(biāo)準(zhǔn)文件包括標(biāo)準(zhǔn)輸入文件 stdin,標(biāo)準(zhǔn)輸出文件 stdout,標(biāo)準(zhǔn)出錯(cuò)信息文件 stderr;其 第 8 頁(yè),共 10 頁(yè)特點(diǎn)是這類文件使用是不必打開(kāi),使用后不必關(guān)閉;由于系統(tǒng)
38、將它在啟動(dòng)系統(tǒng)時(shí)自動(dòng)打 開(kāi),在退出系統(tǒng)時(shí)自動(dòng)關(guān)閉,并且自動(dòng)為三個(gè)標(biāo)準(zhǔn)文件支配緩沖區(qū),指定文件指針; 106. 一般文件包括設(shè)備文件和磁盤文件,其特點(diǎn)是操作前需打開(kāi)文件,操作后需準(zhǔn)時(shí)關(guān)閉; 執(zhí)行打開(kāi)文件函數(shù)實(shí)現(xiàn)打開(kāi)文件的操作就是在內(nèi)存中建立一個(gè)存放文件的緩沖區(qū); 假如 打開(kāi)成功,就內(nèi)存建立一個(gè)緩沖區(qū),并返回首地址,將它賦給一個(gè)定義的文件指針,讓 它指向該文件;如打開(kāi)失敗,就內(nèi)存不建立緩沖區(qū),函數(shù)返回 NULL ; 107. “緩沖文件系統(tǒng)” 是指系統(tǒng)在內(nèi)存區(qū)域中自動(dòng)為打開(kāi)的文件開(kāi)創(chuàng)一個(gè)緩沖區(qū), 對(duì)文件數(shù) 據(jù)的讀寫都要經(jīng)過(guò)緩沖區(qū);具體操作是當(dāng)從文件中寫入數(shù)據(jù)時(shí),先將內(nèi)存數(shù)據(jù)送到內(nèi)存 緩沖區(qū),裝滿緩
39、沖區(qū)后一起送到磁盤;當(dāng)從文件中讀取數(shù)據(jù)時(shí),就是從文件中一次將一 批數(shù)據(jù)送到內(nèi)存裝滿緩沖區(qū),然后再?gòu)木彌_區(qū)逐個(gè)將數(shù)據(jù)送到程序數(shù)據(jù)區(qū),賦給程序變 量;一般地,緩沖區(qū)大小為 512 個(gè)字節(jié);“非緩沖區(qū)系統(tǒng)”是指系統(tǒng)不為文件自動(dòng)建立 緩沖區(qū),而是由程序?yàn)槊總€(gè)文件設(shè)定緩沖區(qū); 108. 一般地認(rèn)為, 使用緩沖文件系統(tǒng)進(jìn)行文件讀寫操作的稱為高級(jí)讀寫函數(shù), 它與機(jī)器無(wú)關(guān); 使用非緩沖文件系統(tǒng)進(jìn)行讀寫操作的稱為低級(jí)讀寫函數(shù),它與機(jī)器有關(guān); 109. 一般文件在對(duì)它進(jìn)行讀寫操作之前需要打開(kāi),其函數(shù)格式如下: fp = fopen“”,” ,fopen是打開(kāi)文件函數(shù)的名字, 這個(gè)參數(shù)是一個(gè)字符串, 需要用雙引號(hào)(
40、 “”)括起來(lái),文件名包括路徑名和擴(kuò)展名;另一個(gè)是打開(kāi)方式,其選擇 如下所示: r:表示讀方式; w :表示寫方式; a:表示追加寫方式; r+w :表示讀寫方式, 也可寫成 r+;rb:表示二進(jìn)制文件讀方式; wb:表示二進(jìn)制文件寫方式; ab:表示二進(jìn) 制文件追加寫方式; br+:表示二進(jìn)制文件讀寫方式; 110. 在執(zhí)行打開(kāi)文件的操作后,總要判定一下返回值是否為 NULL ,假如返回值為 NULL , 說(shuō)明文件打開(kāi)失敗,一般應(yīng)退出該程序,檢查失敗的緣由;因此,常用如下程序段來(lái)對(duì) 沒(méi)有打開(kāi)文件進(jìn)行處理: if fp = NULL printf “filecant open.n”; exit
41、1; 111. 一旦文件的讀寫操作完成后,應(yīng)當(dāng)準(zhǔn)時(shí)地將它關(guān)閉;其函數(shù)格式如下: fcolsefp; 使用 該函數(shù)將一個(gè)被打開(kāi)的文件關(guān)閉,同時(shí)釋放它所占用的內(nèi)存緩沖區(qū);當(dāng)不使用該函數(shù)關(guān) 閉打開(kāi)的文件時(shí),當(dāng)該程序執(zhí)行完后,也會(huì)將打開(kāi)的文件關(guān)閉; 112. 一般文件中:對(duì)一個(gè)字符的讀函數(shù) fgetc ,該函數(shù)的功能是從被打開(kāi)的文件中讀取一個(gè) 字符,其調(diào)用格式如下: c = fgetcfp; 使用該函數(shù)可從有 fp 指針指向的文件中讀取一個(gè) 字符送給 char 型變量 c;反復(fù)使用該函數(shù)可將某個(gè)文件從頭到尾讀一遍, 直到文件終止, 即遇到 EOF 時(shí)為止 ,使用時(shí)應(yīng)做如下判定: ( c = fgetcfp .= EOF ); 113. 使用上述函數(shù)讀取二進(jìn)制文件時(shí),常用 feof 函數(shù)來(lái)判定是否文件終止,因此,接受循 環(huán)方式讀取二進(jìn)制文件內(nèi)容時(shí),循環(huán)語(yǔ)句的條件如下所示: ! feoffp ,該表達(dá)式值為非 0 時(shí),連續(xù)循環(huán),該表達(dá)式值為 114. 一般文件中,一個(gè)字符的寫函數(shù) 0 表示文
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 特價(jià)房買賣合同模板
- 會(huì)議音響租賃合同
- 食品供應(yīng)鏈服務(wù)合同范文
- 搪瓷化工容器的安全標(biāo)準(zhǔn)考核試卷
- 戶外帳篷批發(fā)考核試卷
- 助動(dòng)車行車記錄儀使用與維護(hù)考核試卷
- 摩托車ABS系統(tǒng)傳感器檢測(cè)考核試卷
- 工業(yè)機(jī)器人的智能電源管理考核試卷
- 體育運(yùn)動(dòng)心理承受能力測(cè)試考核試卷
- 家裝整裝合同范本
- 人教版新課標(biāo)小學(xué)美術(shù)二年級(jí)下冊(cè)全冊(cè)教案
- 病歷書寫基本規(guī)范及相關(guān)法律解析
- 我國(guó)互聯(lián)網(wǎng)公司資本結(jié)構(gòu)分析-以新浪公司為例
- 【藍(lán)天幼兒園小一班早期閱讀現(xiàn)狀的調(diào)查報(bào)告(含問(wèn)卷)7800字(論文)】
- 2023年全國(guó)職業(yè)院校技能大賽賽項(xiàng)-ZZ005 裝配式建筑構(gòu)件安裝賽項(xiàng)模塊一理論賽題
- 第二次全國(guó)土地調(diào)查技術(shù)規(guī)程完整版
- 客戶答謝活動(dòng)承包合同
- AQ/T 5201-2007 涂裝工程安全設(shè)施驗(yàn)收規(guī)范(正式版)
- 華南師范大學(xué)333教育綜合專業(yè)碩士歷年考研真題匯編(含部分答案)合集
- 食管早癌的內(nèi)鏡診斷
- 環(huán)保監(jiān)測(cè)設(shè)備運(yùn)維服務(wù)
評(píng)論
0/150
提交評(píng)論