




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、傳智播客C提高講義傳智掃地僧1程序內存模型就業(yè)班引言問題引由企業(yè)需要能干活的人? C學到什么程度可以找工作??對于C/C+初級開發(fā)者,怎么達到企業(yè)的用人標準?就業(yè)問題問:教師,有沒有一個框框?有沒有一個標準???我們學什么哪?C工程開發(fā)需要什么培養(yǎng)什么能力成熟的、商業(yè)化的信息系統(tǒng)在分區(qū)、分層蹙興機核心區(qū)信息系統(tǒng)的技術模型在分層I C基地數(shù)提結構系統(tǒng)編程n鏈表I隊列te樹和二叉樹面試題訓練數(shù)據(jù)類型三大分劭結構悻函數(shù)遞歸基本編程能力冢練基本操作和出皿 進程同通信IPC機制 數(shù)據(jù)編程X接口的封裝和設計(模決劃分,斷用思堪槎口提H的使用能力接口小的直投能力短口值的實現(xiàn)能力身手冰度三尺非一Hn震1玄宮生汨
2、聶2巧日棄馱法嘗工余下項目 案例后16下項國Androic IOS、案例/ 我目開發(fā)點內找出對我們初學者最近的那一層哪些能力是你 入行前,必須要掌握的C項目開發(fā)的套路一套接口/socket_client pool api 設計與實現(xiàn)int sckClient_poolinit(void *handle);int sckClient_getConnet(void *handle, void *hConnect);int sckClient_sendData(void *hConnect, unsigned char *data, int dataLen);int sckClient_getDat
3、a(void *hConnect, unsigned char *data, int*dataLen);int sckClient_getData_Free(void *hConnect, unsigned char*data);? int sckClient_putConnet(void *handle, void *hConnect);? int sckClient_pooldestory(void *handle);總結:尋找到學習的標準培養(yǎng)兩種能力?接口的封裝和設計功能抽象和封裝?接口 api的使用能力?接口 api的查找能力快速上手?接口 api的實現(xiàn)能力?建立正確程序運行內存布局圖
4、印象圖?內存四區(qū)模型圖?函數(shù)調用模型圖總體課程安排課程大綱? C提高C+?數(shù)據(jù)結構?總體時間1個月實用專題?總:輕松入門實戰(zhàn)應用?形式1 :專題的形式錄制話題集中便于初學者學習?形式2:知識點分段錄制、細致講解,從根本上提高初學者水平?項目開發(fā)中的重要點做剖析? 指針鐵律1 2 3 4 5 6 7 8 9 10=»企業(yè)用人標準學員要求?資料,時間空間管理?工作經(jīng)驗,記錄和積累?臨界點?事物認知規(guī)律?挑戰(zhàn) *p , *p, *p?提高課堂效率?課堂例子,當堂運行。?錄制視頻說明不來,看視頻? C/C+學習特點? Java :學習、應用、做項目? C:學習、理解、應用、做項目?多動手?不
5、動手,永遠學不會?關鍵點、關鍵時候,進展 強化訓練和考試小結? 建立信心?接口的封裝和設計?指針教學,多年實踐檢驗?心態(tài)放輕松了?分析有效時間?尊重事物認知規(guī)律、給自己一次機會學員聽課的標準C語言學到什么程度,就可以聽懂傳智播客就業(yè)班 第一階段的課程了 有沒有一個標準??選擇法或者冒泡法排序?在一個函數(shù)內排序?通過函數(shù)調用的方式排序?數(shù)組做函數(shù)參數(shù)的技術盲點和推演內存四區(qū)專題講座數(shù)據(jù)類型本質分析數(shù)據(jù)類型概念? ”類型是對數(shù)據(jù)的抽象?類型一樣的數(shù)據(jù)有一樣的表示形式、存儲格式以與相關的操作?程序中使用的所有數(shù)據(jù)都必定屬于某一種數(shù)據(jù)類型(簡單類型4J浮點型 r其本類型j字符型 空類型(int)(fl
6、oaty double)(cliar)(vriid)二用戶定義類型數(shù)據(jù)類型數(shù)蛆 結構 結構類型j聯(lián)合 I類 I指針類型L)(I) (struct) (union) (class >數(shù)據(jù)類型的本質思考?思考數(shù)據(jù)類型和內存有關系嗎?C/C+為什么會引入數(shù)據(jù)類型?數(shù)據(jù)類型的本質?數(shù)據(jù)類型可理解為創(chuàng)建變量的模具模子;是固定內存大小的別名?數(shù)據(jù)類型的作用:編譯器預算對象變量分配的內存空間大小?程序舉例,如何求數(shù)據(jù)類型的大小sizeof(int *)?請問:數(shù)據(jù)類型可以有別名嗎?數(shù)據(jù)類型可以自定義嗎?數(shù)據(jù)類型大小int main()(int a = 10;int b10;printf("i
7、nt a:%d n", sizeof(a);printf("int a:%d n", sizeof(int *);printf("int b:%d n", sizeof(b);printf("int b:%d n", sizeof(b0);printf("int b:%d n", sizeof(*b);printf("hello.n");getchar();return 0;sizeof是操作符,不是函數(shù);sizeof測量的實體大小為編譯期間就已確定數(shù)據(jù)類型別名?數(shù)據(jù)類型可以理解為固定
8、大小內存塊的別名,請問數(shù)據(jù)類型可以起別名嗎?int main()/Teacher t1;printf("Teacher:%d n", sizeof(Teacher);printf("u32:%d n", sizeof(u32);printf("u8:%d n", sizeof(u8);printf("hello.n");getchar();return 0;數(shù)據(jù)類型的封裝? 1、void的字面意思是“無類型,void *如此為“無類型指針,void*可以指向任何類型的數(shù)據(jù)。? 2、用法1 :數(shù)據(jù)類型的封裝int I
9、nitHardEnv(void *handle);典型的如內存操作函數(shù) memcpy和memset的函數(shù)原型分別為void * memcpy(void *dest, const void *src, size_t len);void * memset ( void * buffer, int c, size_t num );? 3、用法2: void修飾函數(shù)返回值和參數(shù),僅表示無。如果函數(shù)沒有返回值,那么應該將其聲明為void型如果函數(shù)沒有參數(shù),應該聲明其參數(shù)為voidint function(void)return 1;? 4、void指針的意義C語言規(guī)定只有一樣類型的指針才可以相互賦值vo
10、id*指針作為左值用于“接收任意類型的指針void*指針作為右值賦值給其它指針時需要強制類型轉換int *p1 = NULL;char *p2 = (char *)malloc(sizoeof(char)*20);? 5、不存在void類型的變量C語言沒有定義void終究是多大內存的別名? 6、擴展閱讀void類型詳解.doc »數(shù)據(jù)類型總結與擴展? 1、數(shù)據(jù)類型本質是固定內存大小的別名;是個模具, c語言規(guī)定:通過 數(shù)據(jù)類型定義變量。? 2、數(shù)據(jù)類型大小計算sizeof ? 3、可以給已存在的數(shù)據(jù)類型起別名typedef? 4、數(shù)據(jù)類型封裝概念void萬能類型思考1 :C 一維數(shù)組
11、、二維數(shù)組有數(shù)據(jù)類型嗎?int array10假如有,數(shù)組類型又如何表達?又如定義?假如沒有,也請說明原因。拋磚:數(shù)組類型,壓死初學者的三座大山1、數(shù)組類型2、數(shù)組指針3、數(shù)組類型和數(shù)組指針的關系思考2 :C語言中,函數(shù)是可以看做一種數(shù)據(jù)類型嗎?a)假如是,請說明原因并進一步思考:函數(shù)這種數(shù)據(jù)類型,能再重定義嗎?b)假如不是,也請說明原因。拋磚:變量本質分析變量概念? 概念:既能讀又能寫的內存對象,稱為變量;假如一旦初始化后不能修改的對象如 此稱為常量。? 變量定義形式:類型標識符 ,標識符,標識符;? 例如:int x ;int wordCut , Radius , Height ;doub
12、le FlightTime , Mileage , Speed ;例如,變量本質1、程序通過變量來申請和命名內存空間int a = 02、通過變量名訪問內存空間一段連續(xù)內存空間的別名是一個門牌號3、修改變量有幾種方法?1、直接2、間接。內存有地址編號,拿到地址編號也可以修改內存;于是橫空出世了!編程案例3、內存空間可以再取給別名嗎?4、數(shù)據(jù)類型和變量的關系?通過數(shù)據(jù)類型定義變量5、總結與思考題1對內存,可讀可寫;2通過變量往內存讀寫數(shù)據(jù);3不是向變量讀寫數(shù)據(jù),而是向變量所代表的內存空間中寫數(shù)據(jù)。問:變量跑哪去了 ?思考1 :變量三要素(名稱、大小、作用域),變量的生命周期?思考2: C+編譯器
13、是如何管理函數(shù)1,函數(shù)2變量之間的關系的?=引出兩個重要話題:內存四區(qū)模型函數(shù)調用模型重要實驗:int main333()(/2種方法,通過變量直接操作內存/通過內存編號操作內存int i = 0;printf("&i:%dn", &i);*(int *)(1245024) = 10;printf("i:%d",i);printf("hello.n");getchar();return 0;程序的內存四區(qū)模型內存四區(qū)的建立流程硬盤3執(zhí)行過程中,C程厲內存管理程序程序LI.IHrlJ2找到mfd口函數(shù)執(zhí)行Ifl.r<
14、; (hea.p)Mal ex:/new” ,,J.-l,” l .愧作系統(tǒng)管埋柱區(qū)( StnLCk 程序局部殳審傘局IX (global)常討和個局變kb操作系統(tǒng)管理代碼區(qū)trade')操作系統(tǒng)管埋流程說明1、操作系統(tǒng)把物理硬盤代碼load到內存2、操作系統(tǒng)把c代碼分成四個區(qū)3、操作系統(tǒng)找到 main函數(shù)入口執(zhí)行各區(qū)元素分析極區(qū)(stack):由編譯器自動分配釋放,存放函藪的參數(shù)值,局部變量的值等.堆區(qū)(hep): 一般由程序員分配釋放(動態(tài)內存申請馬釋放),若程序員不釋放,程 序結束時可能由操作系統(tǒng)回收.全局區(qū)(靜態(tài)區(qū))(stade):全局變量和靜態(tài)變量的存儲是放在一塊的,初始化的
15、全局 變量和靜態(tài)變量在一塊區(qū)域,未初始優(yōu)的全局變量和未初始化的障態(tài)變量在相然的另一 塊區(qū)域,該區(qū)域在程序結束后由操作系統(tǒng)釋放.常量區(qū);字符串常量和其他常量的存儲位置,程序結束后由操作系統(tǒng)釋放.程序代碼區(qū):存放函皴體的二進制代碼.函數(shù)調用模型 根本原理tb 0的參數(shù) 返回地址一壇。運行狀態(tài)m0的參數(shù)返回地址m疝1勺尹亍狀態(tài)main。的參數(shù)返丹地企一操好系統(tǒng)運萬百工堆棧結束內存四區(qū)模型和函數(shù)調用模型變量傳遞分析1、一個主程序有 n函數(shù)組成,C+編譯器會建立有幾個堆區(qū)?有幾個棧區(qū)?2、函數(shù)嵌套調用時,實參地址傳給形參后,C+編譯器如何管理變量的生命周期?分析:函數(shù)A,調用函數(shù)B,通過參數(shù)傳遞的變量內
16、存空間能用嗎?函第中可晟在提分配內存,可以在塔 上分配網(wǎng)存,全局區(qū)分配F1存, 部遺:司二板心坨使用Fb申育的內存.可以廢m二如使用嗎?1由卡在性上分配的內存,不賬被F口和meiin詼 數(shù)使用_2弗中的內存(埴),可以放mMn和fti承 致好似用3 %中 全局區(qū)分配飛bo#為1內存*是可以徒 fa和iuwIt"俅加唯! M-I的rain提示學好C語言的關鍵建戶正確程序運行內存布局固是( 學好C的關鍵??;如何建立正確的程序運行內存布局圖?內存四區(qū)模型&函數(shù)調用模型?函數(shù)內元素?深入理解數(shù)據(jù)類型和變量“內存屬性? 一級指針內存布局圖(int *,char*)? 二級指針內存布局圖
17、(int * char *)?函數(shù)問?主調函數(shù)分配內存,還是被調用函數(shù)分配內存?主調函數(shù)如何使用被調用函數(shù)分配的內存技術關鍵點:指針做函數(shù)參數(shù)»學習指針的技術路線圖內存四區(qū)強化訓練01全局區(qū)訓練? char *p1="abcdefg ;02堆棧區(qū)生命周期訓練? Char p1="abcdefg ;?返回根本類型?返回非根本類型03堆棧屬性訓練?測試heap生長方向?測試stack生長方向? Heap、stack生長方向和內存存放方向是兩個不同概念?野指針? Malloc得到指針釋放問題測試? free(p)? free(p+1),深入理解成的生長方向和huf的內浮
18、常長方向是兩個不同拊格 念褊鋒的時候所代表的內存空間胸標.號 就己 經(jīng)定義raT作業(yè)強化 訓練1劃由內存四區(qū)void main26()(char buf100;/byte b1 = new byte100;int a = 10; / 分配4個字節(jié)的內存棧區(qū)也叫臨時區(qū)int *p;/ 分配4個字節(jié)的內存p = &a; /cpu 執(zhí)行的代碼,放在代碼區(qū)*p = 20; char *p = NULL; / 分配4個字節(jié)的內存棧區(qū)也叫臨時區(qū)p = (char *)malloc(100); 內存泄露概念if (p != NULL)free(p);system("pause")
19、;全局區(qū)代碼測試char * getstring1()(char *p1 = "abcde"return p1;)char * getstring2()(char *p2 = "abcde"return p2;)void main()(int i= 0;/指針指向誰就把誰的地址賦給指針變量。char *p1 = getstring1();char *p2 = getstring2();char * p3 = NULL; /p3是個變量/指針變量和它所執(zhí)行的內存空間變量是兩個不同的概念strcmp(p1, p2);system("pause&qu
20、ot;);訓練2劃由內存四區(qū)void main01()char buf100;/byte bl = new byte100;int a = 10; / 分配4個字節(jié)的內存棧區(qū)也叫臨時區(qū)int *p;/ 分配4個字節(jié)的內存p = &a; /cpu執(zhí)行的代碼,放在代碼區(qū)*p = 20; /char *p2 = NULL; 分配4個字節(jié)的內存棧區(qū)也叫臨時區(qū)p2 = (char *)malloc(100); / 內存泄露概念if (p2 != NULL)free(p2);/p2 = NULL; 假如不寫,實驗效果,分析原因if (p2 != NULL)(free(p2);)system(&qu
21、ot;pause");)2指針知識體系搭建前言先從整體上把握指針的知識體系。然后突破i級指針、二級指針、多級指針。指針強化鐵律1:指針是一種數(shù)據(jù)類型D 指針也是一種變量,占有內存空間,用來保存內存地址測試指針變量占有內存空間大小2*p操作內存在指針聲明時,*號表示所聲明的變量為指針在指針使用時,*號表示操作指針所指向的內存空間中的值*p相當于通過地址(p變量的值)找到一塊內存;然后操作內存*p放在等號的左邊賦值給內存賦值*p放在等號的右邊取值從內存獲取值3指針變量和它指向的內存塊是兩個不同的概念/含義1給p賦值p=0x1111;只會改變指針變量值,不會改變所指的內容;p =p +1;
22、 /p+/含義2給*p賦值*p='a'不會改變指針變量的值,只會改變所指的內存塊的值/含義3 =左邊*p表示給內存賦值,=右邊*p表示取值含義不同切結!/含義4 =左邊char *p/含義5保證所指的內存塊能修改4指針是一種數(shù)據(jù)類型,是指它指向的內存空間的數(shù)據(jù)類型含義1 :指針步長p+,根據(jù)所致內存空間的數(shù)據(jù)類型來確定p+= (unsigned char )p+sizeof(a);結論:指針的步長,根據(jù)所指內存空間類型來定。注意:建立指針指向誰,就把把誰的地址賦值給指針。圖和代碼和二為一。不斷的給指針變量賦值,就是不斷的改變指針變量和所指向內存空間沒有任何關系鐵律2 :間接賦值
23、*p是指針存在的最大意義1兩碼事:指針變量和它指向的內存塊變量2條件反射:指針指向某個變量,就是把某個變量地址否給指針3*p間接賦值成立條件:3個條件a)2個變量通常一個實參,一個形參b)建立關系,實參取地址賦給形參指針c) *p形參去間接修改實參的值Int iNum = 0; / 實參int *p = NULL;p = &iNum;iNum = 1;*p =2 ; / 通過*形參=間接地改變實參的值*p成立的三個條件:4引中:函數(shù)調用時,用n指針形參改變n-1指針實參的值。/改變0級指針int iNum = 1的值有2種方式/改變1級指針eg char *p = 0x1111的值,有
24、2種方式/改變2級指針的eg char *pp1 = 0x1111的值,有2種方式/函數(shù)調用時,形參傳給實參,用實參取地址,傳給形參,在被調用函數(shù)里面用*p,來改變實參,把運算結果傳出來。/指針作為函數(shù)參數(shù)的精髓鐵律3:理解指針必須和內存四區(qū)概念相結合1)主調函數(shù)被調函數(shù)a)主調函數(shù)可把堆區(qū)、棧區(qū)、全局數(shù)據(jù)內存地址傳給被調用函數(shù)b)被調用函數(shù)只能返回堆區(qū)、全局數(shù)據(jù)2)內存分配方式a)指針做函數(shù)參數(shù),是有輸入和輸出特性的。鐵律4 :應用指針必須和函數(shù)調用相結合 指針做函數(shù)參數(shù)編Rf f-T旨處典數(shù)參數(shù)內存分配方式級別+建棧衛(wèi)主調函數(shù)實參被調函數(shù)形參備注011級指針做輸入堆分配使用一般應用禁 用棧
25、分配使用常用Int showbuf(char *p);int showArray(int *array, int iNum)021級指針做輸出棧使用結果傳出常用int geLen(char *pFileName, int *pfileLen);032級指針做輸入堆分配使用一般應用禁 用棧分配使用常用int main(int arc ,char *arg);指針數(shù)組int shouMatrix(int 34, int iLine);二維字符串數(shù)組042級指針做輸出堆使用分配常用,但不 建議用,轉 化成02int getData(char *data, int *dataLen);Int getD
26、ata_Free(void *data);Int getData_Free(void *data); /防止野指針053級指針做輸出堆使用分配不常用int getFileAllLine(char *content, int *pLine);int getFileAllLine_Free(char *content, int *pLine);指針做函數(shù)參數(shù),問題的實質不是指針,而是看內存塊,內存塊是 1維、2維1)如果根底類int變量,不需要用指針;2)假如內存塊是1維、2維。鐵律5 : 一級指針典型用法指針做函數(shù)參數(shù)一級指針做輸入int showbuf(char *p)int showArra
27、y(int *array, int iNum)一級指針做輸出int geLen(char *pFileName, int *pfileLen);理解主調函數(shù)還是被調用函數(shù)分配內存被調用函數(shù)是在heap/stack 上分配內存鐵律6 :二級指針典型用法指針做函數(shù)參數(shù)二級指針做輸入int main(int arc ,char *arg); 字符串數(shù)組int shouMatrix(int 34, int iLine);二級指針做輸出int Demo64_GetTeacher(Teacher *ppTeacher);int Demo65_GetTeacher_Free(Teacher *ppTeach
28、er);int getData(char *data, int *dataLen);Int getData_Free(void *data);Int getData_Free2(void *data); / 防止野指針理解主調函數(shù)還是被調用函數(shù)分配內存被調用函數(shù)是在heap/stack 上分配內存鐵律7 :三級指針輸由典型用法三級指針做輸出int getFileAllLine(char *content, int *pLine);int getFileAllLine_Free(char *content, int *pLine);理解主調函數(shù)還是被調用函數(shù)分配內存被調用函數(shù)是在heap/sta
29、ck 上分配內存鐵律8:雜項,指針用法幾點擴大1野指針2種free形式int getData(char *data, int *dataLen);int getData_Free(void *data);int getData_Free2(void *data);22次調用主調函數(shù)第一次調用被調用函數(shù)求長度;根據(jù)長度,分配內存,調用被調用 函數(shù)。3返回值 char */int/char *4C程序書寫結構商業(yè)軟件,每一個出錯的地方都要有日志,日志級別鐵律9 : 一般應用禁用 malloc/new接口封裝設計思想引導基于socketclient客戶端接口設計與實現(xiàn)仿真模擬附錄【王保明教師經(jīng)典語錄
30、】1指針也是一種數(shù)據(jù)類型,指針的數(shù)據(jù)類型是指它所指向內存空間的數(shù)據(jù)類型2間接賦值*p是指針存在的最大意義3理解指針必須和內存四區(qū)概念相結合4應用指針必須和函數(shù)調用相結合指針做函數(shù)參數(shù)指針是子彈,函數(shù)是槍管;子彈只有沿著槍管發(fā)射才能顯示它的威力;指針的學習重點不言而喻了吧。接口的封裝和設計、模塊的劃分、解決實際應用問題;它是你的工具。5指針指向誰就把誰的地址賦給指針6指針指向誰就把誰的地址賦給指針,用它對付鏈表輕松加愉快7鏈表入門的關鍵是分清楚鏈表操作和輔助指針變量之間的邏輯關系8C/C+語言有它自己的學習特點;假如 java語言的學習特點是學習、應用、上項目; 那么C/C+語言的學習特點是:學
31、習、理解、應用、上項目。多了一個步驟吧。9學好指針才學會了 C語言的半壁江山,另外半壁江山在哪里呢?你猜,精彩剖析在課堂。10)理解指針關鍵在內存,沒有內存哪來的內存首地址,沒有內存首地址,哪來的指針啊。3字符串和一級指針內存模型專題字符串根本操作 字符數(shù)組初始化方法int main11()(111大。號法初始化列表/數(shù)組初始化有2種方法默認元素個數(shù)、指定元素個數(shù)char buf1 = 'a', 'b', 'c', 'd', 'e');/假如沒有指定長度,默認不分配零/假如指定長度,不夠報錯; buf長度多于初始化
32、個數(shù),會自動補充零char buf26 = 'a', 'b', 'c', 'd', 'e');char buf36 = 'a', 'b', 'c', 'd', 'e');/char buf45 = 'a', 'b', 'c', 'd', 'e');printf("buf3:%s", buf3);system("pause&quo
33、t;);)在C語言中使用字符數(shù)組來模擬字符串C語言中的字符串是以0 '完畢的字符數(shù)組C語言中的字符串可以分配于棧空間,堆空間或者只讀存儲區(qū)/在C語言中使用字符數(shù)組來模擬字符串/C 語言中的字符串是以0 '完畢的字符數(shù)組/C 語言中的字符串可以分配于棧空間,堆空間或者只讀存儲區(qū)int main12()(/1用字符串來初始化數(shù)組char buf2 = 'a', 'b','c','d','0'/2字符串常量初始化一個字符數(shù)組char buf3 = "abcde" / 結論:會補充零ch
34、ar buf4 = "abcde"char buf5100 = "abcde"printf(" strlen(buf5) :%d n", strlen(buf5);printf(" sizeof(buf4) :%d n", sizeof(buf5);printf(" sizeof(buf4) :%d n", sizeof(buf4);/strlen() 求字符串的長度,注意字符串的長度不包含0/sizeof(類型)字符串類型,的大小,包括 0 ;02Sizeof 與 strlen 的區(qū)別數(shù)組法和
35、指針法操作字符串03字符串操作數(shù)組法,下標法字符數(shù)組名,是個指針,是個常量指針;字符數(shù)組名,代表字符數(shù)組首元素的地址,不代表整個數(shù)組的。如果代表這個數(shù)組,那需要數(shù)組數(shù)據(jù)類型的知識!下期分解/字符串操作方法數(shù)組下標法指針法int main13()(int i = 0;char buf5100 = "abcde"char *p = NULL;/下標法for (i=0; i<100; i+)(printf("%c", buf5i);printf("n");/指針法1for (i=0; i<100; i+)(printf(&quo
36、t;%c”, *(buf5+i);/buf5 是個指針,是個常量指針/指針法2printf("n");p = buf5;for (i=0; i<100; i+)(printf("%c", *(p+i);)/buf5 是個指針,是個常量指針)推演過程為:i變0+I,去口號加*號/其實本質:指針*p間接尋址,操作內存;/編譯器為我們做了 *p操作而已字符串做函數(shù)參數(shù)深入理解指針。的關鍵是什么?注思指針和數(shù)組的巨大區(qū)別char *p =" abcdefg "Char *buf ="abcdefg "一維字符串內存模
37、型:兩種void copy_str01(char *from, char *to)(for (; *from!=''0' from+, to+)(* to = *from;)* to = '0')void copy_str02(char *from, char *to)(while(*from!='0')(* to+ = *from+;)*to = '0')void copy_str03(char *from, char *to)(while( (*to=*from) !='0')(to+;from+;)v
38、oid copy_str04(char *from, char *to)(while( (*to+=*from+) !='0')(;)int copy_str05_good(const char *from, char *to)(if (from=NULL | to=NULL)(printf("func copy_str05_good() err. (from=NULL | to=NULL)n");return -1;)while( (*to+=*from+) !='0')(;)return 0;)典型錯誤知多少char *str_ct(ch
39、ar *x, char* y)/* 簡化算法 */(char str380;char *z=str3; /* 指針 z 指向數(shù)組 str3*/ while(*z+=*x+);z-;/*去掉串尾完畢標志*/while(*z+=*y+);z=str3; /*將str3 地址賦給指針變量 z*/ return(z);修改字符常量結果會如何Char *p =" abcdefg "Modify p1 ='1'04字符串操作易錯/你往哪里輸入數(shù)據(jù)int main()char buf2000;char *p = NULL;p = buf;printf("n請輸入
40、一個字符串:");scanf("%s", p);printf("%s", p);getchar();getchar();return 0;)庫函數(shù)api快速的上手api是一種能力!建立正確的程序運行示意圖,內存四區(qū)與函數(shù)調用堆棧圖是根本保障!int main31()(char buf1100;char buf2200;strcpy(buf1, "111");printf("%s", strcat(buf1, "222");getchar();return 0;)int main32()
41、(char *string1 = "1234567890”;char *string2 = "747DC8"int length;/在字符str1中查找,與str2中任意字符有公共交集的位置length = strcspn(string1, string2);printf("Character where strings intersect is at position %dn", length);getchar();return 0;/strnset函數(shù)有錯誤/測試程序修改如下int main33()(char string = "
42、abcdefghijklmnopqrstuvwxyz"char letter = 'x'printf("string before strnset: %sn", string);strnset(string, letter, 13);printf("string after strnset: %sn", string);getchar();return 0;int main44()char *string1 = "abcdefghijklmnopqrstuvwxyz"char *string2 = "
43、;onm"char *ptr;ptr = strpbrk(string1, string2);if (ptr)printf("strpbrk found first character: %cn", *ptr);elseprintf("strpbrk didn't find character in setn");getchar();return 0;int main55()char input16 = "abc,d"char *p;/* strtok places a NULL terminatorin front
44、 of the token, if found */p = strtok(input, ",");if (p) printf("%sn", p);/* A second call to strtok using a NULLas the first parameter returns a pointerto the character following the token*/p = strtok(NULL, ",");if (p) printf("%sn", p);getchar();return 0;)/典型的狀態(tài)函數(shù)int main()(char str = "now # is the time for all # good me
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年安徽省中考歷史試卷真題及答案詳解(精校打印版)
- 中小學心理健康教育與學生心理健康素養(yǎng)提升論文
- 中學語文“思辨性閱讀與表達”教學策略與傳統(tǒng)文化教育的融合論文
- 艾弗格公司管理制度
- 苗圃地冬季管理制度
- 茶油樹基地管理制度
- 融入數(shù)字孿生的中職智慧園林學習空間構建與應用
- 管理學谷歌案例分析
- 視覺感知汽車領域應用分析
- 自動控制原理課程設計 (一)
- XX公司事故隱患內部報告獎勵制度1
- 兒童重癥肺炎護理常規(guī)
- 裝飾裝修施工方案
- 骨科手術切口感染的預防與控制
- 影視制作基地裝修施工合同
- 河北省唐山市重點達標名校2025屆中考聯(lián)考生物試卷含解析
- 2025年廣西職業(yè)院校技能大賽高職組(中藥傳統(tǒng)技能賽項)參考試題庫及答案
- 電動車售后維修流程與服務質量提升
- 漂發(fā)染發(fā)知識培訓課件
- 2025年山東威海文旅發(fā)展集團有限公司招聘筆試參考題庫含答案解析
- 內分泌科室院感工作總結
評論
0/150
提交評論