c語(yǔ)言-day第一章入門(mén)_第1頁(yè)
c語(yǔ)言-day第一章入門(mén)_第2頁(yè)
c語(yǔ)言-day第一章入門(mén)_第3頁(yè)
c語(yǔ)言-day第一章入門(mén)_第4頁(yè)
c語(yǔ)言-day第一章入門(mén)_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第一章: 一) )機(jī)器語(yǔ)言匯編語(yǔ)言高級(jí)語(yǔ)言結(jié)構(gòu)化語(yǔ)言象語(yǔ)言 語(yǔ)言由早期的編程語(yǔ)言 第一章: 一) )機(jī)器語(yǔ)言匯編語(yǔ)言高級(jí)語(yǔ)言結(jié)構(gòu)化語(yǔ)言象語(yǔ)言 語(yǔ)言由早期的編程語(yǔ)言 語(yǔ)言之父: 語(yǔ)言標(biāo)準(zhǔn)的發(fā)展 年 年 年 即從 語(yǔ)言標(biāo)準(zhǔn):日, 正 ,即 3)gcc -std=C 語(yǔ)言的特點(diǎn) 可移植性不好相對(duì)語(yǔ)言的應(yīng)用引擎數(shù)據(jù)庫(kù)引擎面向過(guò)程的程序設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)算數(shù)據(jù)結(jié)構(gòu):算法的五大特點(diǎn):)有窮性)確定性)輸入)輸出)偽代碼和流程圖的作用。流程圖各符號(hào)的意義和畫(huà) ,以函數(shù) 操作系統(tǒng)除了內(nèi)核之外,還需要很多其他的工具,比如 工具鏈GNU 工具鏈 (GNU Toolchain)+等)、GNU Binutils(比如:ar

2、、objdumpGNU make (進(jìn)行詞法、語(yǔ)法檢查,編譯成匯編代碼等 不的二進(jìn)制代碼可以用 進(jìn)行反匯編 匯編結(jié)束即停 打開(kāi)所有警 不的二進(jìn)制代碼可以用 進(jìn)行反匯編 匯編結(jié)束即停 打開(kāi)所有警 指定庫(kù)文件 交叉編1)交叉編譯pilation)上(PC)X86PC3) 頭文件和源文件為什么要分開(kāi) c 語(yǔ)言中頭文件中一般定義了函數(shù)的 從業(yè)務(wù)擴(kuò)展性上看:頭文件提供接口,頭文件中放函數(shù)的 ,函數(shù)由源文件實(shí)現(xiàn),接口 分開(kāi),這在面對(duì)業(yè)務(wù)變更頻繁的需求中技術(shù)實(shí)現(xiàn)的好處是顯明、結(jié)構(gòu)體定義、宏就都可以充當(dāng)這部分的模塊與模塊間、業(yè)務(wù)功能 間的接這正是基于組件編程的 。二)在當(dāng)前目錄下有 和 二)在當(dāng)前目錄下有 和

3、 運(yùn) 也可以通過(guò) 變量設(shè)置頭 如: (與效果一樣可以通過(guò) 命令分析某執(zhí)行程序所依賴的庫(kù)文件要方法 方法 方法 或 把自己應(yīng)用程序使 然后用 命令使配置文件生效當(dāng)然也可以重啟動(dòng)態(tài)庫(kù)的使用相關(guān)接口 3) 的作用?簡(jiǎn)單 文件的的命令執(zhí)行 帶來(lái)的好處就是“自動(dòng)化編譯”,一旦寫(xiě)好,只需要一個(gè) 開(kāi)發(fā)的效率。 是一個(gè)工具,是一個(gè)解釋令工具。makefile令腳 工具最主要也是最基本的功能就是通過(guò) 文件來(lái)描述源 編譯工作。而 文件需要按照某種語(yǔ)法進(jìn) 的使用:使用 調(diào)試程序,需要 編譯時(shí)加 選項(xiàng),然 的常用選項(xiàng)指定要調(diào)試程序: 退出: 查看源代碼設(shè)置命令行參數(shù):查看命令行參數(shù): 設(shè)置斷點(diǎn)查看斷點(diǎn): 執(zhí)行到下一斷

4、點(diǎn)處向下執(zhí)行一步(遇到函數(shù)調(diào)用,進(jìn)入到被調(diào)函數(shù): 設(shè)置變量值: 跳出函數(shù): 編寫(xiě) 文件,通過(guò) 命令自動(dòng)化編譯執(zhí) 調(diào)試工具的使一)基本數(shù)據(jù)類型中:整型、浮點(diǎn)型、指針類型、聚合類型(數(shù)組和結(jié)構(gòu)體)整型 種:字符型、短整型、整型、長(zhǎng)整型種:字符型、有符號(hào)字符型、無(wú)符號(hào)字符型、無(wú)符號(hào) 至少和 一樣長(zhǎng), 至少和 一樣長(zhǎng), 一樣長(zhǎng)寬字符類型: 是 的字符數(shù)據(jù)類型,是一種擴(kuò)展 程序的實(shí)現(xiàn)中, 數(shù)據(jù)類型一 位,但不同的 或 字符數(shù)遠(yuǎn)超 型。常用進(jìn)制的字母表示進(jìn)制以 結(jié)如 可以以 以 結(jié)以 開(kāi)頭 如 表示十進(jìn)制整型數(shù)在計(jì)算機(jī)中的二進(jìn)制表示如整數(shù)二進(jìn)制表示為反加 無(wú)符號(hào)整數(shù)最大值:所有的二進(jìn)制位都是無(wú)符號(hào)整數(shù)最小

5、值:所有的二進(jìn)制位都是,即為關(guān)于有符號(hào)整數(shù)的最大值和最小為符號(hào)位,正數(shù)符號(hào)位為,負(fù)數(shù)符號(hào)位為,所以為,其它位都是有符號(hào)整數(shù)最小值:為,其它位都是有符號(hào)最大值浮點(diǎn)數(shù)在計(jì)算機(jī)中的表示IEEEV=(-1)S * 1.M * 符號(hào)位:ss=0,Vs=1,V尾數(shù): M1,2。(尾數(shù))指數(shù): 2E(E2S1E8M23* 1.M * 2(E-轉(zhuǎn)成數(shù)值即為:V=(-double:V=(-1)S * 1.M 2(E-1023) 16.52的權(quán)是 2 的負(fù)數(shù)冪,例如二進(jìn)制小數(shù) 101.11 表示數(shù)字則是:1*22+0*21+1*20+1*2-1+1*2-2=5.75 所以 16.5 的 二進(jìn)制為04+127 =

6、floatfloat7(223 107),所以整數(shù)部分占的位數(shù)越多,小數(shù)部分 的精度就越低。 floatdouble8. 1)把任意的地址直接賦給一個(gè)指針,比*p = 的2)ff2c)3)04+127 = floatfloat7(223 107),所以整數(shù)部分占的位數(shù)越多,小數(shù)部分 的精度就越低。 floatdouble8. 1)把任意的地址直接賦給一個(gè)指針,比*p = 的2)ff2c)3) 指針變量一般涉及到兩個(gè)值: 指針變量本身和指針?biāo)赶虻淖兞?10const *pa)*constpa*constpa 11. 無(wú)類型指針和空指針無(wú)類型指針: void*p空指針*p= NULL此時(shí)的含義與

7、*pNULL中NULL的區(qū)別,NULL其實(shí)就是一個(gè)宏定義符號(hào),可以查看/usr/include/linux/stddef.h 中的宏定義)*pNULL;此時(shí)NULL 表示空指針, #defineNULLvoid*)0)*p= (此時(shí)NULL 0, #defineNULL 所以說(shuō)NULL 0 12枚舉類型enum 的使用和注意641s11E,剩52 位為有效數(shù)字Mtypedef 和#define 1)typedef; typedef PCHARa,b,相當(dāng)于char*a, btypedef 和#define 1)typedef; typedef PCHARa,b,相當(dāng)于char*a, b, 即c

8、har*acharbcharc;相當(dāng)于 char*a; char*b; char*c; n = 5 的區(qū)別CHARPa,b,#defineN 5 和 #define const #define const #define定義的符號(hào)和宏存在于程序的代碼段,在實(shí)際使用中只是一個(gè)const const gdb const 變量調(diào)試而不能對(duì)#defineconst 一般修飾函數(shù)的參數(shù),可以防止被意外的修改,提高程序的健作用域(scope)1)文件作用域:(在本文件中任何地方都可以使用函數(shù)作用域:(). 4)的變量則不能在1)屬性函數(shù)體內(nèi)的局部變量 無(wú)(任何2)屬性,屬性(可以在其他文件中使用a = 1

9、0;:a; (a 是在其他地方定義過(guò),拿過(guò)來(lái)使用即可。即:使用其它地方定義過(guò)的變量在默認(rèn)具有外屬性的標(biāo)識(shí)符(變量或函數(shù))前面加上 ic 屬性(store 程序運(yùn)行時(shí)變量,屬性(可以在其他文件中使用a = 10;:a; (a 是在其他地方定義過(guò),拿過(guò)來(lái)使用即可。即:使用其它地方定義過(guò)的變量在默認(rèn)具有外屬性的標(biāo)識(shí)符(變量或函數(shù))前面加上 ic 屬性(store 程序運(yùn)行時(shí)變量程序員進(jìn)行動(dòng)態(tài)內(nèi)存分配獲得的內(nèi)存空間(malloc/calloc/realloc),register 二)c 屬性(gdb 各變量的地址,清楚棧區(qū)、堆區(qū)、全局?jǐn)?shù)據(jù)區(qū)、文本區(qū)的大致地址空間分布ic 用于代碼塊ic sa= a 2

10、. 自增/a= b=a+; c= 三 )1c 編寫(xiě) 語(yǔ)言程序, 通過(guò)移位操作計(jì)算無(wú)符號(hào)整型的最大值編寫(xiě) 語(yǔ)言程序,通過(guò)移位操作計(jì)算有符號(hào)整編寫(xiě) 語(yǔ)言程序, 通過(guò)移位操作計(jì)算無(wú)符號(hào)整型的最大值編寫(xiě) 語(yǔ)言程序,通過(guò)移位操作計(jì)算有符號(hào)整型的最大值和有符整型的最小值 查看 中的符號(hào)定義打印本機(jī)規(guī)定的各數(shù)據(jù)類型 最大值和最小值。參考定義如下 和 兩個(gè)變量 請(qǐng)問(wèn) 的值是多少 能表示的最大數(shù)是,而為會(huì)溢出 所以 的值為 的二進(jìn)制表示: 溢出后則為 即浮點(diǎn)型比較常見(jiàn)問(wèn)) 程序,判斷 和 的大if(x-編寫(xiě)語(yǔ)言程序,有判斷是否與相根據(jù): bs(x-0.1)=0.000001)0.1有如下 語(yǔ)言程序 請(qǐng)問(wèn)程序執(zhí)行

11、后、 值分別如下: 一般情況下: 后無(wú)論多少項(xiàng)相加,是計(jì)算完表達(dá)式后,再自加 前都是先自加,之后再計(jì)算表達(dá)式當(dāng)然 不同的編譯器可能有不同的詞法分析規(guī)則,所以不同的編譯器執(zhí)行結(jié) 查看本機(jī)上的執(zhí)行結(jié)果, 字節(jié)序問(wèn)題查看本機(jī)結(jié)果形成的過(guò)程編寫(xiě) 語(yǔ)言程序,利用指針操作驗(yàn)證本機(jī)字UDP/TCP/IP一)輸入兩個(gè)正整數(shù)m 和n,求其最大公約數(shù)和最小公倍編寫(xiě)函數(shù)UDP/TCP/IP一)輸入兩個(gè)正整數(shù)m 和n,求其最大公約數(shù)和最小公倍編寫(xiě)函數(shù),利用循環(huán)編寫(xiě)函數(shù)輸出任何類型數(shù)的二進(jìn)制形式( 算方式 得出的浮點(diǎn)數(shù)二進(jìn)制結(jié)果一致:比如二進(jìn)制表示為0將以上 循環(huán)的基礎(chǔ)練習(xí)題均改用 循環(huán)和 循環(huán)實(shí) 1、2、3、4個(gè)數(shù)字

12、,能組成多少個(gè)互不相同且無(wú)重復(fù)數(shù)字的三位數(shù)?并一球從100米高1010左移的時(shí)候沒(méi)有邏輯左移和算術(shù)左移之分,都是往右邊低位補(bǔ))邏輯右移:不管正負(fù)數(shù),往左邊補(bǔ)算術(shù)右移:正數(shù)還是一樣,符號(hào)位是,往左邊補(bǔ)負(fù)數(shù)由于符號(hào)位是,往左邊 和 關(guān)鍵字的作用補(bǔ)最短的循環(huán)放在最外層,減少 跨切循環(huán)層的次數(shù),提高運(yùn)行效率。 goto 語(yǔ)句也稱為無(wú)條件轉(zhuǎn)移語(yǔ)句,goto 語(yǔ)句通常與條件語(yǔ)句配合使用??捎脕?lái)實(shí)現(xiàn)條件轉(zhuǎn)移, 循環(huán),跳出循環(huán)體等功能。一般情況下,在結(jié)構(gòu)化程goto程序都產(chǎn)生 。goto gotogotogoto二). 越界信息:”out of2一)sizeof 邏輯操作符(& 二). 越界信息:”out o

13、f2一)sizeof 邏輯操作符(& |)(operator/src/logic_test.c) 如: 0 x0001b?a:b) 即c=a; c = b; a = b;b = a;a = b; a=10; a = a + 3.14 3.14 double double 型,則右邊的double轉(zhuǎn)13當(dāng) if-else 分支比較多的時(shí)候,最好用 switch-case 能夠提高運(yùn)行效率和代碼的可讀性。但是注意:switch-case 后跟的條件 只能是整型(字符型,短比如: “ 被截輸出比如: “ 被截輸出 則此時(shí)只做了一次顯示類型轉(zhuǎn)二)編寫(xiě) 語(yǔ)言程序,用戶輸入 進(jìn)制格式表示的文件權(quán)限三位數(shù),

14、請(qǐng)判斷該位數(shù)表示的讀、寫(xiě)、執(zhí)行權(quán)限。執(zhí)行)編寫(xiě)函數(shù)編寫(xiě)函數(shù) ,將型數(shù)的第 位置型數(shù)的第 為清一) 語(yǔ)言中有兩種聚合數(shù)據(jù)類型,數(shù)組和結(jié)構(gòu)體,數(shù)組中所有元素類型一致,對(duì)數(shù)組名 操作,取的是數(shù)組中所有元素的總字節(jié)數(shù)之和 語(yǔ)言中數(shù)組大小是在編譯時(shí)就可知并確定的,編譯器會(huì)為數(shù)組預(yù)留內(nèi)存空 。注意數(shù)將數(shù)組 賦值給數(shù)組,需要每個(gè)元素都進(jìn)行賦值 該程序執(zhí)行結(jié)果是一個(gè)死循環(huán),因?yàn)閿?shù)組越界,會(huì)把 的值 蓋掉所以 加到最后 該程序執(zhí)行結(jié)果是一個(gè)死循環(huán),因?yàn)閿?shù)組越界,會(huì)把 的值 蓋掉所以 加到最后總會(huì)是,則循環(huán)會(huì)不斷 左值和右值的賦值符號(hào)的左右兩邊例如:a = b + 25;a結(jié)果值的地點(diǎn),b25b25a; 原先用作

15、ab + 25b + 25 此時(shí)是左值此時(shí) 是右有 數(shù)組,則 和 和 到 區(qū)別?數(shù)組名,是一個(gè)指針常量,不能改變它的值 一般不能做左值即除 可以作為右值:即利用指針的間,表示數(shù)組首元素的地?cái)?shù)組時(shí) 表示整個(gè)數(shù)組的首地址所以會(huì)造成用 和 去進(jìn)行元素偏移時(shí)偏移大小不 結(jié)果是: 二)給出一個(gè)含有 個(gè)元素的整型數(shù)組,其中只有一個(gè)元素出現(xiàn)奇數(shù)次出這個(gè)元素。2n n/2,求這個(gè)元素。 3 求兩個(gè)含有 n 個(gè)整型元素的有序非降序數(shù)組的共同元素。42 (array/src/ array_outbin.c) 5利用數(shù)組,實(shí)現(xiàn)棧出這個(gè)元素。2n n/2,求這個(gè)元素。 3 求兩個(gè)含有 n 個(gè)整型元素的有序非降序數(shù)組的

16、共同元素。42 (array/src/ array_outbin.c) 5利用數(shù)組,實(shí)現(xiàn)棧(先進(jìn)后出)(array/include/stack.h,array/src/ElementType push(ElementType e);ElementType top(void); size_t size(void);/*彈出棧頂元素獲取棧頂元素/*/*判斷是否棧滿2 2 取余的方式將某整形數(shù)轉(zhuǎn)(array/include/queue.harray/srcqueue.c)ElementTypeenqueue(ElementTypee); ElementType dequeue(void); Elem

17、entType cpqueue(void);size_t size(void); /*元素入隊(duì)隊(duì)首元素87 7 (array/include/queue.harray/srcloop_queue.c) 1)(array/src/ insert_sort.c) 4)11(array/src/ bubble_sort.c) 找 出 一 個(gè) 非 遞 減 序 列 中 絕 對(duì) 值 最 小 的 (參考 時(shí)間復(fù)雜度空間復(fù)雜度二維數(shù)組一1. a34 = 1,2,3,5,6,7,9,10,11,b34 = 1,2,3,4,二維數(shù)組一1. a34 = 1,2,3,5,6,7,9,10,11,b34 = 1,2,3

18、,4,5,6,7,8,9,10,11,c4 = 1,2,3,4,5, 6,7,8,9,10,11,2. 。3. 方式直接利用下,比如一個(gè)有n 行m 列的0-n-10-m-1a02。關(guān)于二維數(shù)組名a 的真實(shí)含義,可以類比一維數(shù)組:比a34 = 1,2,3,5,6,7,9,10,11,a0 &a00: 0 0 列該元素的地址a+1 的值與&a10&a+1 的值與&a24值相等 &a00+1的值與&a01值相等到a11可以有以下三種方式:直接利用下標(biāo): a11要/注意:a+1 后必須要通過(guò)指針的顯示類a 1)址p,以及元素總個(gè)數(shù):voidout( for(i= 0;i n;f(%dn,2)址p,以及

19、行數(shù)row 和列數(shù)void第i 行第j 列的時(shí)候則為如下方式for(i=0;irow;for(j=0;jcol;1)址p,以及元素總個(gè)數(shù):voidout( for(i= 0;i n;f(%dn,2)址p,以及行數(shù)row 和列數(shù)void第i 行第j 列的時(shí)候則為如下方式for(i=0;irow;for(j=0;jcol;3) void第i 行和第j 列的時(shí)候則for(i=0;irow;for(j= 0;j 4;/下面三種方式都可以(3 中總結(jié)的三種方式,i,j,i,j,i,j,以上voidrow)等價(jià)于void(*p)數(shù)組指針元素類型 指針數(shù)組: 二)1a23 = (1,2),(3,4),(5,

20、則*p= f(%dn,a23= 2二)1a23 = (1,2),(3,4),(5,則*p= f(%dn,a23= 2p = 所以結(jié)果為: &a42-&p42 等于多少?&a42 &a00+)+ ) + )&p42&a00+相隔了多少個(gè)元素,所以最后結(jié)果是: 431111211661數(shù),判斷數(shù)組中是否含有該整數(shù)。利用二維數(shù)組實(shí)現(xiàn)哈希表散列表 數(shù),判斷數(shù)組中是否含有該整數(shù)。利用二維數(shù)組實(shí)現(xiàn)哈希表散列表 往表中放入一個(gè)元素 查找某個(gè)元素在表 刪除某個(gè) 素表的總的元素個(gè)數(shù)判斷表是否滿查詢表中所有元素 引號(hào)” ”括起來(lái)由于 語(yǔ)言中沒(méi)有字符串類型所以表示字符串可以用字符數(shù)組或字符串量: 語(yǔ)言中規(guī)定字符串以結(jié)尾字符數(shù)組: 字符串常量: 注意分別用 操作符和 函數(shù)去取得 值,并比較字符串長(zhǎng)度獲取函數(shù) 遇到結(jié)束指針數(shù)組 比如: “ ” “5要求打印后順序?yàn)椋?163217231213642212 ,8 ,6 ,4 ,3 ,8 ,7, 二級(jí)指針指向指針的指針保存另一個(gè)指針變量地址的指針變量語(yǔ)法: 如: 一 二級(jí)指針指向指針的指針保存另一個(gè)指針變量地址的指針變量語(yǔ)法: 如: 一級(jí)指針 中保存著變量 的地二級(jí)指針 中保存著變量 的地關(guān)于語(yǔ)言 比如: 則打印輸出、(表示所有位置參數(shù)的個(gè)數(shù)包括程序名稱本身 (表示 字符串的指針(表示 字符串的指針常用的字符串輸入輸出函、 格

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論