1.程序=數(shù)據(jù)+算法;C語(yǔ)言=數(shù)據(jù)+函數(shù);模塊化程序設(shè)計(jì);
目前創(chuàng)新互聯(lián)已為近1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、文圣網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
2.面向過(guò)程是一種以過(guò)程為中心的編程思想
3.首先將復(fù)雜的問(wèn)題分解為一個(gè)個(gè)容易解決的問(wèn)題
4.分解過(guò)后的問(wèn)題可以按照步驟一步步完成
5.函數(shù)是面向過(guò)程在C語(yǔ)言中的體現(xiàn)
6.解決問(wèn)題的每個(gè)步驟可以用函數(shù)來(lái)實(shí)現(xiàn)
7.程序中的聲明可以理解為預(yù)先告訴編譯器實(shí)體的存在,如:變量,函數(shù),等等
8.程序中的定義明確指示編譯器實(shí)體的意義
聲明和定義并不相同
extern int a;//聲明是其他文件的變量,不需要分配空間 int a=10;//定義,分配一個(gè)空間
9.函數(shù)參數(shù)在本質(zhì)上與局部變量相同,都是在棧上分配空間
10.函數(shù)參數(shù)的初始值是函數(shù)調(diào)用時(shí)的實(shí)參值
11.函數(shù)參數(shù)的求值順序依賴于編譯器的實(shí)現(xiàn),C語(yǔ)言中大多數(shù)運(yùn)算符對(duì)其操作數(shù)求值的順序都是依賴于編譯器的實(shí)現(xiàn)的?。?!
12.程序中存在一定的順序點(diǎn)
13.順序點(diǎn)指的是執(zhí)行過(guò)程中修改變量值的最晚時(shí)刻
14.在程序達(dá)到順序點(diǎn)的時(shí)候,之前所做的一切操作必須反映到后續(xù)的訪問(wèn)中
15.每個(gè)完整表達(dá)式結(jié)束時(shí)
16.&&,||,?;以及逗號(hào)表達(dá)式的每個(gè)運(yùn)算對(duì)象計(jì)算之后
17.函數(shù)調(diào)用中對(duì)所有實(shí)際參數(shù)的求值完成之后(進(jìn)入函數(shù)體之前)
18.C語(yǔ)言會(huì)默認(rèn)沒(méi)有類型的函數(shù)參數(shù)為int
19.C語(yǔ)言中可以定義參數(shù)可變的函數(shù)
20.參數(shù)可變函數(shù)的實(shí)現(xiàn)依賴于stdarg.h頭文件
21.va_list變量與va_start,va_end和va_arg配合使用能夠訪問(wèn)參數(shù)值
22.可變參數(shù)必須從頭到尾按照順序逐個(gè)訪問(wèn)
23.參數(shù)列表中至少要存在一個(gè)確定的命令參數(shù)
24.可變參數(shù)宏無(wú)法判斷實(shí)際存在的參數(shù)的數(shù)量
25.可變參數(shù)宏無(wú)法判斷參數(shù)的實(shí)際類型
26.va_arg中如果指定了錯(cuò)誤的類型,那么結(jié)果是不可預(yù)測(cè)的
27.宏是由預(yù)處理器直接替換展開(kāi)的,編譯器不知道宏的存在
28.函數(shù)是由編譯器直接編譯的實(shí)體,調(diào)用行為有編譯器決定
29.多次使用宏會(huì)導(dǎo)致程序代碼量增加
30.函數(shù)是跳轉(zhuǎn)執(zhí)行的,因此代碼量不會(huì)增加
31.宏的效率比函數(shù)要高,因?yàn)槭侵苯诱归_(kāi),無(wú)調(diào)用開(kāi)銷
32.函數(shù)調(diào)用時(shí)會(huì)創(chuàng)建活動(dòng)記錄,效率不如宏
33.宏的效率比函數(shù)稍高,但是其副作用巨大,容易出錯(cuò)
34.函數(shù)存在實(shí)參到形參的傳遞,因此無(wú)任何副作用,但是函數(shù)需要建立活動(dòng)形象,效率受影響
35.宏參數(shù)可以是任何C語(yǔ)言實(shí)體,宏編寫(xiě)的_MIN_參數(shù)類型可以是int,float等等,宏的參數(shù)可以是類型名。
36.活動(dòng)記錄是函數(shù)調(diào)用時(shí)用于記錄一系列相關(guān)信息的記錄
臨時(shí)變量域:用來(lái)存放臨時(shí)變量的值,如K++的中間結(jié)果
局部變量域:用來(lái)存放函數(shù)本次執(zhí)行中的局部變量
機(jī)器狀態(tài)域:用來(lái)保存調(diào)用函數(shù)之前有關(guān)機(jī)器狀態(tài)的信息,包括各種寄存器的當(dāng)前值和返回地址等
實(shí)參數(shù)域:用于存放函數(shù)的實(shí)參信息
返回值域:為調(diào)用者函數(shù)存放返回值
37.遞歸是數(shù)學(xué)領(lǐng)域中概念在程序設(shè)計(jì)中的應(yīng)用
38.遞歸是一種強(qiáng)有力的程序設(shè)計(jì)方法
39.遞歸的本質(zhì)為函數(shù)內(nèi)部在適當(dāng)?shù)臅r(shí)候調(diào)用自身
40.C語(yǔ)言中遞歸函數(shù)必然會(huì)使用判斷語(yǔ)句
41.遞歸函數(shù)在需要編寫(xiě)的時(shí)候定義函數(shù)的出口,否則棧會(huì)溢出
42.遞歸函數(shù)是一種分而治之的思想
43.不要在函數(shù)中使用全局變量,盡量讓函數(shù)從意義上是一個(gè)獨(dú)立的功能模塊
44.參數(shù)名要能夠體現(xiàn)參數(shù)的意義
45.如果參數(shù)時(shí)指針,且僅作輸入?yún)?shù)用,則應(yīng)在類型前加const,以防止該指針在函數(shù)體內(nèi)被意外修改
46.不要省略返回類型,如果函數(shù)沒(méi)有返回值,那么應(yīng)聲明為void類型
47.在函數(shù)體的“入口處”對(duì)參數(shù)的有效性進(jìn)行檢查,對(duì)指針的檢查尤為重要
48.語(yǔ)句不可返回指向“棧內(nèi)存”的“指針”,因?yàn)樵搩?nèi)存在函數(shù)體結(jié)束時(shí)被自動(dòng)銷毀
49.函數(shù)體的規(guī)模要小,盡量控制在80行代碼之內(nèi)
50.相同的輸入應(yīng)當(dāng)產(chǎn)生相同的輸出,盡量避免函數(shù)帶有“記憶”功能
51.避免函數(shù)有太多的參數(shù),參數(shù)個(gè)數(shù)盡量控制在4個(gè)以內(nèi)
52.有時(shí)候函數(shù)不需要返回值,但為了增加靈活性,如支持鏈?zhǔn)奖磉_(dá),可以附加返回值
53.函數(shù)名與返回值類型在語(yǔ)義上不可沖突