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

正文內(nèi)容

c語言程序設(shè)計(jì)教程(第2版)下ppt-資料下載頁

2025-01-19 08:04本頁面
  

【正文】 果為: ajiodjierlokji max is:o 小 結(jié) (1) 指針 , 就是某個(gè)對(duì)象所占用的存儲(chǔ)單元的首地址 , 即指針是內(nèi)存地址的別名 。 而指針變量是專門用來存放某種變量的首地址的變量 。 指針也是一個(gè)變量 , 它和普通變量一樣占用一定的存儲(chǔ)空間 。 但與普通變量不同的是 , 指針的存儲(chǔ)空間中存放的是地址 , 而不是普通數(shù)據(jù)類型 。 (2) 對(duì)指針變量的引用 , C語言提供了兩種有關(guān)的運(yùn)算符 ,即:取變量地址運(yùn)算符 “ amp。‖和間接訪問運(yùn)算符 “ *” 。 (3) 指針變量是表示地址的量。地址量并不是整數(shù),它不像整數(shù)那樣可以進(jìn)行乘除等算術(shù)運(yùn)算、移位運(yùn)算等,指針變量的取值和運(yùn)算始終與內(nèi)存地址的表示關(guān)聯(lián)在一起,所以指針運(yùn)算實(shí)際上是地址運(yùn)算。因此,指針變量的運(yùn)算受到嚴(yán)格的限制。 (4) 指針數(shù)組的一個(gè)應(yīng)用是作為 main()函數(shù)的形參 , 在以前的說明中 , main()函數(shù)是無參數(shù)的 。 實(shí)際上 , main()可帶兩個(gè)形參 , 即: main(int argc,char *argv[]) 其中 , argc表示傳給程序的參數(shù)的個(gè)數(shù) , 它的值至少為 1;而 argv[]是指向字符串的指針數(shù)組 。 (5)在前面的程序中經(jīng)??匆?void關(guān)鍵字 , 用它說明一個(gè)函數(shù)不需要任何參數(shù)或者不返回任何值 。 其實(shí) , void關(guān)鍵字也可以定義一個(gè)通用的指針變量 , 該指針變量可以指向任何一種數(shù)據(jù)類型 。 (6) 在程序編譯后 , 內(nèi)存中就會(huì)出現(xiàn)一個(gè)稱為堆的區(qū)域 , 該區(qū)域是一個(gè)自由存儲(chǔ)區(qū)域 , 對(duì)此區(qū)域用 C語言的動(dòng)態(tài)分配函數(shù)進(jìn)行管理 。 常用的內(nèi)存管理函數(shù)有: malloc()、 calloc()和 free()函數(shù) 。 第 10章 編譯預(yù)處理 本章要點(diǎn) ?熟練掌握 include命令的含義和用法 ?理解 define命令的使用 ?了解各種條件編譯 (if、 else、 endif、 ifdef和undef等 )的意義及用法 本章難點(diǎn) ?文件包含命令 include的使用 ?帶參宏與函數(shù)的區(qū)別 ?區(qū)分條件編譯預(yù)處理指令的使用場合 概 述 一、編譯預(yù)處理的概念 C語言允許在程序中使用幾種特殊的命令(它們不是一般的 C語句),在 C編譯系統(tǒng)對(duì)程序進(jìn)行通常的編譯之前,先對(duì)程序中這些特殊命令進(jìn)行“預(yù)處理”,然后將預(yù)處理的結(jié)果和源程序一起再進(jìn)行通常的編譯處理,以得到目標(biāo)代碼。 二、主要預(yù)處理功能 ⑴ 宏定義 ; ⑵文件包含; ⑶條件編譯 文件包含 ―文件包含“ : 是指一個(gè)源文件可以將另外一個(gè) 源文件的全部內(nèi)容包含進(jìn)來。 C語言提供 include命令來實(shí)現(xiàn)“文件包含”的操作,其一般形式為: include “文件名” include 文件名 或 作用: 使編譯系統(tǒng)把指定的被包含文件嵌入 到帶有 include的源文件中。 ―文件包含”示意圖 包含 include―‖ B A B A (a) (b) (c) 假如 : int a,b,c。 float m,n,p。 char r,s,t。 : include main() {……} 經(jīng)過編譯預(yù)處理后 , : int a,b,c。 float m,n,p。 char r,s,t。 main() {……} 包含文件的查找方法: include ―文件名” 先在當(dāng)前工作目錄中去查找,若找不到再到指定的標(biāo)準(zhǔn)目錄中去查找。 如:對(duì) Turbo C編譯系統(tǒng),先在用戶目錄下 查找,然后在 TC\include文件夾中查找。 include 文件名 直接到系統(tǒng)指定的標(biāo)準(zhǔn)目錄中去查找。 如:對(duì) Turbo C編譯系統(tǒng),直接在 TC\include 文件夾中查找。 在使用編譯預(yù)處理 include語句時(shí),需要注意的幾個(gè)問題如下: (1) 當(dāng) include語句指定的文件中的內(nèi)容發(fā)生改變時(shí) , 包含文件的所有源文件都應(yīng)該注意重新進(jìn)行編譯等處理 。 (2) 文件包括可以嵌套使用 , 即被包括的文件中還可以使用 include語句 。 (3) 由 include語句指定文件中可以包含任何語言成分 , 通常將經(jīng)常使用的 、 具有公共性質(zhì)的符號(hào)常量 、 帶參數(shù)的宏定義以及外部變量等集中起來放在這種文件中 , 這樣可以避免一些重復(fù)操作 。 (4)被包含的文件通常是源文件,而不是目標(biāo)文件 。 根據(jù)經(jīng)驗(yàn)的總結(jié),以下內(nèi)容放在頭文件中比較合適。需要說明的是 C語言對(duì)此沒有強(qiáng)行的規(guī)定。 ①包含指令(嵌套),如: include. ② 函數(shù)聲明,如: extern float fun(float x)。 ③ 類型說明,如: enum bool {false,true} ④ 常量定義,如: const float pi=。 ⑤ 數(shù)據(jù)聲明,如: extern int m。 ⑥ 宏定義,如: define PI 3 .1415926。 無參宏定義 作用: 用標(biāo)識(shí)符來代表一個(gè)字符串。 宏定義 宏名 宏內(nèi)容 無分號(hào) 宏 : 是對(duì)正文進(jìn)行代入或嵌入的一種功能。即從 一字符流中取出某個(gè)字符串去代替源程序里 的標(biāo)識(shí)符。 : define 標(biāo)識(shí)符 常量 引例 : define PI main() { float l,s,r,v。 printf(―input radius :‖)。 scanf(―%f‖,amp。r)。 l=*PI*r。 s=PI*r*r。 v=*PI*r*r*r。 printf(―l=%\ns=%\nv=%\n‖,l,s,v)。 } 其中 define PI 作用是指定標(biāo)識(shí)符 PI來代表“ ‖ 宏定義允許嵌套,在宏定義的字符串中可以使用已經(jīng)定義的宏名。在宏展開中由預(yù)處理程序?qū)訉哟鷵Q。 例如: define N 2 define M N+1 define NUM (M+1)*M/2 替換的過程為; NUM=( M+1) *M/2;而 M=M+1,也就是說 NUM=( N+1+1)*N+1/2。 ⑵ 宏 名用做代替一個(gè)字符串,不作語法檢查; ⑶ 宏定義的字符串不能以“ 。‖結(jié)尾,字符串結(jié)束后一 定要換行 ; ⑸ C語言允許宏定義出現(xiàn)在程序中函數(shù)外面的任何 位置,但一般情況下它總寫在文件的開頭。 說明: ⑴ 宏名一般習(xí)慣用大寫字母,以便與變量名相區(qū)別; ⑷ 在進(jìn)行宏定義時(shí),可以引用已定義的宏名; (6)宏名的前后應(yīng)有空格,以便準(zhǔn)確地辨認(rèn)宏名,如果沒有留空格,則程序運(yùn)行的結(jié)果會(huì)出錯(cuò)。 說明: ⑴ 宏替換由編譯程序預(yù)先進(jìn)行; ⑵ 宏替換范圍是 除字符串以外 的所有宏名字; ⑶ 若替換后文本串中仍含有宏名字,將再次進(jìn) 行替換,直到程序中不含宏名字為止。 define PI define R define L 2*PI*R define S PI*R*R ? 宏替換 (宏展開 ) :用宏內(nèi)容(字符串)原樣代 換程序中的所有宏名字的過程。 第一次替換: printf(l=%f \ns=%f\n, 2*PI*R, PI*R*R)。 二: printf(l=%f \ns=%f\n, 2**, **)。 main() { printf(l=%f \ns=%f\n,L,S)。 } 有 參宏定義 一般形式 : define 宏名(宏形參數(shù)表) 字符串 作用: 宏替換時(shí)以實(shí)參數(shù)替代形參數(shù)。 define PI define S(r) PI*r*r main() { float r1=, area。 area=S(r1)。 /* S(r1)用 PI*r1*r1替換 */ printf(r=%f area=%f\n,r1,area)。 } 注意: 宏替換后,程序的原意表達(dá)。 define PF(x) x*x /*define PF(x) (x)*(x) */ /*define PF(x) ((x)*(x)) */ main() { int a=2, b=3, c。 c=PF(a+b)/PF(a+1)。 printf(\nc=%d ,c)。 } 按第一種宏定義: c=a+b*a+b/a+1*a+1; 按第二種宏定義: c=(a+b)*(a+b)/(a+1)*(a+1); 按第三種宏定義: c=((a+b)*(a+b))/((a+1)*(a+1)); 注意替換時(shí)不求值, 只是字符串的原樣替換 define MAX(x,y) xy?x:y main() { int n1,n2。 float f1,f2。 scanf(%d%d%f%f,amp。n1,amp。n2,amp。f1,amp。f2)。 printf(maxi=%dmaxf=%f,MAX(n1,n2),MAX(f1,f2))。 } 程序舉例: 經(jīng)預(yù)編譯宏替換后的 printf語句如下: printf(maxi=%dmaxf=%f,n1n2?n1:n2, f1f2?f1:f2)。 終止宏定義 宏命令 undef用于終止宏定義的作用域 。 一般形式為: unfine 宏名 例如: define area(r) (PI*r*r) main() {……} undef area(r) func() {……} 由于在函數(shù) func()之前,使用 undef終止宏名 area(r)的作用,在函數(shù) func()中 area(r)不再起作用。 undef也可以用于函數(shù)內(nèi)部。 帶參數(shù)的宏替換與函數(shù)的主要區(qū)別 ⑴ 函數(shù)調(diào)用時(shí),先求出實(shí)參表達(dá)式的值,然后代入 形參。而使用帶參的宏只是進(jìn)行簡單的字符替換。 ⑵ 函數(shù)調(diào)用是在程序運(yùn)行時(shí)處理的,分配臨時(shí)的內(nèi) 存單元。而宏替換則是在編譯時(shí)進(jìn)行的,在展開 時(shí)并不分配內(nèi)存單元,不進(jìn)行值的傳遞處理,也 沒有 “ 返回值 ” 的概念。 ⑷ 函數(shù)中函數(shù)名及參數(shù)均有一定的數(shù)據(jù)類型,而宏 不存在類型問題,宏名及其參數(shù)無類型。 ⑶ 宏替換不占運(yùn)行時(shí)間,只占編譯時(shí)間,而函數(shù)調(diào) 用則占運(yùn)行時(shí)間。 例 宏替換與函數(shù)調(diào)用的區(qū)別。 define MUL(a,b) a+b int m(int a,int b) { return (a*b)。 } main() { printf(“%d\n”,MUL(1+2,54))。 printf(“%d\n”,m(1+2, 54))。 } 程序的運(yùn)行結(jié)果為: 7 3 原因顯而易見,調(diào)用 MUL宏時(shí),計(jì)算的表達(dá)式是 1+2*54,而調(diào)用 m函數(shù)時(shí),計(jì)算的表達(dá)式的是( 1+2) *( 54)。 條 件 編 譯 條件編譯:根據(jù)條件選擇被編譯的源程序行。 ?使用宏定義的標(biāo)識(shí)符作為編譯條件 ?使用常量表達(dá)式的值作為編譯條件 一、使用宏定義的標(biāo)識(shí)符作為編譯條件 ifdef 標(biāo)識(shí)符 程序段 1 else 程序段 2 endif 形式一: 作用: 當(dāng)所指定的標(biāo)識(shí)符已經(jīng)被 define 命令定義過,則在程序編譯階段只編譯程序段 1,否則編譯程序段 2。 ifdef 標(biāo)識(shí)符 程序段 1 endif 形式二: 作用: 當(dāng)所指定的標(biāo)識(shí)符已經(jīng)被 define 命令定義過,
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1