freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

模塊化程序設(shè)計ppt課件(參考版)

2025-01-16 08:22本頁面
  

【正文】 } 。 } /* 例 用宏計算平方 */ include define square(n) ((n)*(n)) int main(void) { int i=1。 return 0。 int main(void) { int i=1。也可能不適合某些計算。 宏定義過程中不像函數(shù)那樣要進行參數(shù)值的計算、傳遞及結(jié)果返回等操作;宏定義只是簡單的字符替換,不進行計算。 所以,通常對簡短的表達式,以及調(diào)用頻繁、要求快速響應(yīng)的場合 (如實時系統(tǒng)中 ),采用宏比采用函數(shù)合適。宏定義時要用宏體去替換宏名,往往使程序體積膨脹,加大了系統(tǒng)的存儲開銷。 printf(sq=%d\n,sq)。a)。 printf(input a number: )。 2/10/2022 141 C語言程序設(shè)計 3. 在宏定義中的形參是標(biāo)識符,而宏調(diào)用中的實參可以是表達式。在函數(shù)中,形參和實參是兩個不同的量,各有自己的作用域,調(diào)用時要把實參值賦予形參,進行“值傳遞”。要用它們?nèi)ゴ鷵Q形參,因此必須作類型說明。 2. 在帶參宏定義中,形式參數(shù)不分配內(nèi)存單元,因此不必作類型定義。 2/10/2022 140 C語言程序設(shè)計 1. 帶參宏定義中,宏名和形參表之間不能有空格出現(xiàn)。 printf(“Fmax=%f \n,fmax)。n)。 scanf(%f%f,amp。 printf(“Imax=%d \n,imax)。y)。 scanf(%d%d,amp。 float m,n,fmax。 } 2/10/2022 139 C語言程序設(shè)計 宏定義中的形參沒有類型之別,但函數(shù)中的形參有類型之別。 max=fmax(x,y)。 max=MAX(x,y)。x,amp。 printf(input two numbers: )。 2/10/2022 138 C語言程序設(shè)計 如果定義一個函數(shù)求兩數(shù)中的較大者的函數(shù) : define MAX(a,b) (ab)?a:b int fmax(int a,int b) { return (ab)?a:b。宏展開后該語句為: max=(xy)?x:y。 } 上例程序的第一行進行帶參宏定義,用宏名 MAX表示條件表達式(ab)?a:b,形參 a,b均出現(xiàn)在條件表達式中。 max=MAX(x,y)。x,amp。 printf(input two numbers: )。 帶參宏調(diào)用的一般形式 : 宏名 (實參表 ); 2/10/2022 136 C語言程序設(shè)計 例如: define M(y) y*y+3*y /*宏定義 */ : k=M(5)。對帶參數(shù)的宏,在調(diào)用中,不僅要宏展開,而且要用實參去代換形參。 2/10/2022 135 C語言程序設(shè)計 四、帶參數(shù)的宏定義 C語言允許宏帶有參數(shù)。 三、撤銷已定義的宏 用命令# undef 可以撤銷已定義的宏。 例如 define AIPHABET ABCDEFGHHIJKLMN\ OPQRSTUVWXY ( 6)宏定義可以寫在源程序中的任何地方,但一定要寫在程序中引用該宏之前,通常寫在一個文件之首。 } 運行結(jié)果為: The CIRCUM is and AREA is 宏名字“ CIRCUM”和“ AREA”替換格式串“ CIRCUM”和“ AREA”。 int main(void) { printf(“The CIRCUM is %f ”, CIRCUM)。 舉例如下: include define PI define RADIUS define CIRCUM return(*PI* RADIUS)。 例如在前面的例子中,不可以用“ R” 替換“ CIRCUM”中的“ R” 。 } ( 4)不能進行的宏替換。 /*分號是 return語句的一部分 */ define AREA return(PI* RADIUS* RADIUS)。 例如求圓的周長和面積的程序可以改寫為 include define PI define R define CIRCUM *PI*R /* 使用了前面定義的 R和 PI */ define AREA PI*R*R int main(void) { printf(“The circum is %f and area is %f\n”,CIRCUM,AREA)。 ◆不能進行宏名字的重定義。這樣的表示方法使宏名與變量名有明顯的區(qū)別,以避免混淆。 例如想用“ A NAME” 定義“ SMISS” ,而寫成: define A NAME SMISS 則實際進行的宏定義是 A為宏名字,宏體是“ NAME SMISS” 。 將不進行宏定義 。 ( 2)宏名字的使用 ◆ 宏名字不能用引號括起來 。 (3) 宏定義可以給程序設(shè)計帶來許多方便。 如要將 RADIUS的值由 ,只要在# define命令中修改一處便可。 使用宏定義可以提高可理解性。 和 return (PI*RADIUS*RADIUS)。 是否能很快地看出它們在計算什么呢 ?顯然不能。 如果人們看到以下語句 return (**)。 符號常數(shù)的定義就是這種宏定義的一種應(yīng)用。 一、字符串宏定義及其基本格式 # define命令最簡單的應(yīng)用就是定義一個符號常量。 在這些編譯預(yù)處理中,應(yīng)用最多的就是對宏的處理。 ( 5)編譯雜注,使用命令: progma。 ( 3)條件編譯,使用命令: if、 ifdef、 ifndef、else、 endif、 elif、 defind。 目前, C語言的編譯預(yù)處理功能主要有如下一些: ( 1)文件包含,使用命令: include。 為避免錯誤,應(yīng)使用條件編譯來測試有無重復(fù)定義。 應(yīng)當(dāng)注意,修改了頭文件時,所有涉及該頭文件的程序都應(yīng)重新編譯,所以在編制頭文件時應(yīng)盡量考慮周全。 系統(tǒng)將用雙引號方式進行搜索。 case 注釋 好的頭文件不能包含以下內(nèi)容: 一般函數(shù)定義 數(shù)據(jù)定義 如 : int a。 好的頭文件應(yīng)包含如下一些內(nèi)容: 類型定義 如定義一個枚舉類型 : enum color {RED,BLUE,GREEN,YELLOW}。 保持聲明一致性的簡單辦法是提供一個頭文件 , 讓頭文件中的信息作為各模塊之間的接口信息 , 有利于提供可重用的模塊 。 其使用方法因開發(fā)工具而異 , 請參考有關(guān)手冊 。 C語言程序設(shè)計 二 、 用項目管理多文件程序的編譯與鏈接過程 多文件程序的編譯 、 鏈接過程是比較麻煩的 。 這樣的好處在于: 當(dāng)程序的一個局部有錯誤或?qū)植窟M行了修改時,可以只重新編譯該局部,不需要將整個程序都重新編譯。 格式為: const 數(shù)據(jù)類型 變量 1=初始表達式 1,變量 2=初始表達式 2, ? 如: const double X=。也就是把變量定義為只讀變量。 } 三、通過 const聲明將變量存儲在只讀區(qū) C語言可以開辟一個只讀區(qū)。)。 i++) printf (%c, 39。 */ { for(i=0。 i++) /* 輸出 5行 */ prt(); } void prt() /* 輸出一行 5個 39。 void main(void) { void prt(); for(i=0。a39。 f1( ) { printf (%d, %d\n, x,y)。 } *** ***/ extern int x,y。 f1()。 void main(void) { x=12。 *** ***/ include int x, y。當(dāng)一個全局變量定義在文件 file1中時,在另外的文件中使用 extern聲明,可以通知編譯系統(tǒng)一個信息:“此變量到外部去找”。 /*定義 x, y是外部變量 */ void gy() { printf(3:x=%d\t y=%d\n, x, y)。 printf(2:x=%d\t y=%d\n, x, y)。 } void gx() { extern int x, y。 gx()。 /*聲明 x, y是外部變量,作用域擴充至此 */ printf (1: x=%d\t y=%d\n, x, y)。對于位于定義點之前的函數(shù),可以用 extern聲明使變量的作用域擴充到需要用到它的函數(shù)。 對外部變量 (靜態(tài)全局變量除外 ),除可以定義一次外,還可以多次進行聲明(引用性聲明)。 ( 2) 當(dāng)一個源程序由若干個源文件組成時 , 在一個源文件中定義的外部變量在其它的源文件中也有效 。 外部變量的特點: (1) 外部變量和全局變量是對同一類變量的兩種不同角度的提法 。 return 0。 i10。 randomstart(n)。 scanf(%d, amp。 } include int main(void) { int i, n。 return(r)。 static unsigned int r。 } 運行結(jié)果: 1 2 3 靜態(tài)全局類型 在多文件程序中, 用 static聲明外部變量 ,使該外部變量的作用域僅限于所在的文件 , 而不用 static聲明的外部變量的作用域為整個程序。 /*使用了 static說明符 */ x++。 int main(void) { increment ( ); increment ( ); increment ( ); return 0。 printf (″%d\n″,x)。 } void increment(void) { int x=0。 } include void increment(void)。i4。 } main() { int i。 b=b+2。 ( 4) 在定義靜態(tài)局部變量時 , 如果 不賦初值 , 系統(tǒng)自動賦值為 0或空字符 ( 對字符型變量 ) 。 C語言程序設(shè)計 靜態(tài)局部變量的特點: ( 1) 靜態(tài)局部變量在每次調(diào)用函數(shù)結(jié)束后能夠保留調(diào)用結(jié)束后的值不變 , 留待下一次調(diào)用 , 變量值具有 繼承性 。 函數(shù)調(diào)用結(jié)束后 , 并不釋放所占用的存貯空間 ( 總是占用固定的存貯空間 ) , 在程序運行期間 , 始終存在 , 但除了定義它的函數(shù)以外 , 別的函數(shù)不能使用 。 在一個函數(shù)內(nèi)部 , 可以用 static定義一個變量 , 稱為 靜態(tài)局部變量 。 如定義一個頻繁使用的變量為寄存器類型: register int i。 存放在 CPU的寄存器中 , 使用時 , 不需要訪問內(nèi)存 , 而直接從寄存器中讀寫 , 這樣可提高訪問效率 。 由于自動變量的作用域和生存期都局限于定義它的函數(shù)或復(fù)合語句內(nèi) , 因此不同的函數(shù)中允許使用同名的變量而不會混淆 。 因此函數(shù)調(diào)用結(jié)束之后 , 自動變量的值不能保留 。 自動變量存貯在自動存貯區(qū) , 只有在使用它 , 即定義該變量的函數(shù)被調(diào)用時才給它分配存儲單元 , 開始它的生存期。 auto char c。 char c。 在前面 所學(xué) 的程序中定義的變量凡未加存儲類型說明符的都是自動變量 。 函數(shù)的參數(shù) ( 形參 ) 也是一種自動變量 。 auto存儲類型和 register存儲類型 使用 auto聲明的變量是局部變量 , 編譯器將其分配在自動存儲區(qū) 。 全局類型 ,不需要標(biāo)識符聲明。 靜態(tài)局部類型 ,在函數(shù)內(nèi)部,使用 static聲明。 b=c。 /* 聲明自動變量 */ c=a。 return 0。 swap()。 /* 說明函數(shù) */ int a=3, b=5。 全局變量就是被分配在靜態(tài)存儲區(qū)的。 分配在靜態(tài)存儲區(qū)的變量在程序開始執(zhí)行時被創(chuàng)建并自動初始化(數(shù)值變量被初始化為 0),當(dāng)程序結(jié)束時才被撤銷。并且, 變量必須有程序員顯式地進
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1