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

正文內(nèi)容

大學(xué)計算機程序設(shè)計基礎(chǔ)c語言3ppt(已修改)

2025-02-01 03:47 本頁面
 

【正文】 程序設(shè)計基礎(chǔ) (國家級精品課 ) 張長海 程序設(shè)計基礎(chǔ) (國家級精品課 ) ? 第七章 指針 ? 第八章 表單數(shù)據(jù)組織 —結(jié)構(gòu)體 ? 第九章 再論函數(shù) 第七章 指針 ? 指針與變量 ? 指針運算 ? 指針與數(shù)組 ? 指針與字符串 ? 指向指針的指針 ? 本章小結(jié) 作業(yè) : 習(xí)題集: P85—20 練習(xí) : ? 指針是高級程序設(shè)計語言中一個重要的概念 ? 正確靈活運用指針 – 可有效地表示和使用復(fù)雜的數(shù)據(jù)結(jié)構(gòu) – 可動態(tài)分配內(nèi)存空間,節(jié)省程序運行空間,提高運行效率 ? 不正確理解和使用指針,指針將是程序中最危險的成分,由此帶來的后果可能是無法估量的。 必須清楚:數(shù)據(jù)在內(nèi)存中的存儲和訪問方式 已知:每個變量 ?在計算機內(nèi)存占用一塊存儲區(qū) ?該存儲區(qū)的地址就是相應(yīng)變量的地址 ?變量可能有值 ?該存儲區(qū)保存的內(nèi)容就是相應(yīng)變量的值 5 V 0F000: 變量地址 變量名 變量值 變量的存儲區(qū) 167。 指針與變量 ? 例如有變量聲明 char c=39。S39。 int v=27,u=32。 int *p = amp。v。 則編譯程序分別給變量 c 、 v 、 u 、 p 分配存儲空間如圖所示 B804 B800 變量 p B802 32 變量 u B800 27 變量 v B7FF ?S? 變量 c 地址 內(nèi)存 變量名 變量 c被分配在 B7FF開始的一個字節(jié)的內(nèi)存區(qū)域中。 B7FF是該存儲區(qū)域的地址,同時也是變量 c的地址,也稱 B7FF是變量 c的指針;該內(nèi)存區(qū)域中存儲的字符‘ S’是該存儲區(qū)域的內(nèi)容,也是變量 c的值。 變量 v被分配在 B800開始的兩個字節(jié)的內(nèi)存區(qū)域中。 B800是該兩個字節(jié)的存儲區(qū)域的首地址,同時也是變量 v的地址,也稱 B800是變量 v的指針;該內(nèi)存區(qū)域中存儲的整數(shù) 27是該存儲區(qū)域的內(nèi)容,也是變量 v的值。 變量 p被分配在 B804開始的四個字節(jié)的內(nèi)存區(qū)域中。 B804是其首地址,同時也是變量 p的地址,也稱 B804是變量 p的指針;該區(qū)域中存儲的 B800是是變量 p的值。 p是指向 int類型變量的指針類型變量,目前它指向變量 v ,所以變量 p的值是 v的地址,也就是 B800 ,稱 p指向 v 。 ? 必須理解清楚 : – 給變量分配的內(nèi)存區(qū)域 – 該內(nèi)存區(qū)域的地址 – 該內(nèi)存區(qū)域保存的內(nèi)容 – 以及它們之間的關(guān)系 ? 一個變量 v的指針或稱指向變量 v的指針 就是給它分配的內(nèi)存區(qū)域的 地址 或說是給它分配的內(nèi)存區(qū)域的地址 首地址 ? 訪問變量 – 直接訪問:直接使用變量 v的名字 v*10:用變量 v的值( 27)乘以 10,得 270 ? 間接訪問: 使用指向相應(yīng)變量的指針 訪問變量 v 可以用下面方式來實現(xiàn): *p (*p)*10 :通過指向 v 的指針變量 p ,采用間接訪問的方式實現(xiàn)對變量 v 的訪問,取出變量 v 的值參與運算。同樣得到值 270 。 地址與指針是同意語。變量的指針就是變量的地址,存放變量地址(指針)的變量是指針變量 167。 指針類型與指針變量 指針類型和基類型: – 在 C中,任何一個類型都伴隨著一個指向本類型變量的 指針類型 – 表現(xiàn)形式 設(shè)有類型 T,則指向 T類型變量的指針類型用: T * 表示, T稱為該指針類型的 基類型 。 指針變量: ? 意義 – 指針變量簡稱指針 – 是一種特殊的變量 – 它里面存儲的“值”被解釋成為一個變量的地址,確切的說是計算機內(nèi)存的一個地址。 ? 聲明指針變量 說明指向 T類型變量的指針變量使用形式: T *p , *p , … *p 。 其中,每個 p都是標(biāo)識符,是被說明的指針類型的變量,確切的說是“指向 T類型變量的指針變量”。 ? 指針?biāo)赶虻念愋涂梢允? – 基本數(shù)據(jù)類型 – 構(gòu)造型數(shù)據(jù)類型 – 指針類型 – 函數(shù) ? 經(jīng)常簡稱 “指向 T類型變量的指針變量 v” – “v指向 T類型” – “ T類型的指針 v” ? 例如 int *iptr1, *iptr2 。 /* 說明指向 int類型變量的指針變量 iptr1和 iptr2 */ char * cptr 。 // 說明指向 char類型變量的指針變 cptr int x , y 。 char ch = 39。a?。 ? 指針變量的值是內(nèi)存地址(宏觀上講是變量的地址) ? 求取不同類型變量或常量地址的表達方式不同 : – 基本類型變量、數(shù)組成員、結(jié)構(gòu)體變量、公用體變量等,用求地址運算符“ amp。”獲取變量的地址; – 數(shù)組的地址與其第一個元素(成員)的地址相同,用數(shù)組名字本身表示; – 函數(shù)的地址為函數(shù)的入口地址,用函數(shù)名字表示 設(shè)有聲明: int *iptr1, *iptr2 。 char * cptr; int x , y 。 char ch = 39。a?。 在此基礎(chǔ)上,有操作: iptr1 = amp。x。 cptr = amp。ch。 x = 5。 iptr2 = amp。y。 y = 8。 內(nèi)存單元 地址 變量 E990 指針 iptr1 E994 指針 iptr2 E998 指針 cptr E99C int型變量 x E99E int型變量 y E9A0 char型變量 ch E99C E99E E9A0 ?a? 5 8 如果再執(zhí)行 iptr1=iptr2; 9E167。 指針?biāo)缸兞? ? 指針變量 和 指針?biāo)缸兞?是兩個不同的概念 – 指針變量即指針,它本身存儲某個內(nèi)存地址(某個變量的地址)。 – 指針?biāo)缸兞繛橹羔樧兞恐兴4娴膬?nèi)存地址對應(yīng)的變量。 地址 內(nèi)存 變量 j EAB6 3 變量 i EAB4 EAB4 變量 iptr EAB0 程序片段 int * iptr。 int i=3 , j 。 iptr = amp。i。 運算符“ * ”訪問指針?biāo)缸兞康膬?nèi)容,稱為間接引用 運算符。語句: j = *iptr 將把 iptr所指內(nèi)存單元( EAB4)中的內(nèi)容送入變量 j ,此時 j的值為 3。 *iptr表示指針變量 iptr所指變量的內(nèi)容。 3 void main(){ /* 2 */ int i,j。 /* 3 */ int *pmax,*pmin,*p。 /* 4 */ printf(Input an integer:)。 /* 5 */ scanf(%d,amp。i)。 /* 6 */ printf(Input an other integer:)。 /* 7 */ scanf(%d,amp。j)。 /* 8 */ pmax=amp。i。 /* 9 */ pmin=amp。j。 /* 10 */ if (ij){ /* 11 */ p=pmax。 /* 12 */ pmax=pmin。 /* 13 */ pmin=p。 /* 14 */ } /* 15 */ printf(“max=%d , min=%d \n”,*pmax,*pmin )。 /* 16 */ } /* 17 */ 例 71 用指針變量實現(xiàn):輸入兩個 整數(shù),按從大到小順序輸出 運行結(jié)果演示 假設(shè)輸入 25 、 38 ,該 程序 運行到第 10行結(jié)束時 i: pmax: 25 p: j: pmin: 38 amp。i amp。i amp。jamp。j amp。i 當(dāng)程序執(zhí)行完第 12行 p=pmax。 當(dāng)程序執(zhí)行完第 13行 pmax=pmin。 當(dāng)程序執(zhí)行完第 14行 pmin=p。 ? 注意符號“ *”的用法: ?“ *” 放在表達式中的指針變量之前 “對指針?biāo)缸兞康脑L問”,稱為間接引用操作符。 例 71第 17行打印語句中的“ *pi”, “*pj”, “*pch”。 ?“ *” 放在指針定義中時,表示指針類型, 指針定義符,用來說明指針變量 。 例 71第 5行的“ int *pi,*pj;”,說明指向 int類型的指針變量 pi 、 pj ; 第 6行的“ char *pch ;”,說明指向 char類型的指針變量pch 。 167。 空指針與無效指針 ? NULL是 C指針類型的一個特殊值,稱為“空” ? 表示指針變量的值為空,不指向任何變量或函數(shù)。 ? NULL值屬于所有指針類型。判斷指針變量 iptr的值是否為空可以使用 iptr != NULL 或 iptr == NULL ? 保證指針在沒有指向有效對象時取值為 NULL是一種良好的編程風(fēng)格。 ? 有時可能不小心生成無效指針 invalid pointer – 無效指針是指一個指針變量無值,它既沒有指向確定的變量或函數(shù),也不是 NULL。 –程序中存在無效指針,不是好的程序設(shè)計風(fēng)格 – 產(chǎn)生無效指針的原因很多,例如 ?說明指針變量后還沒有給它賦值; ?把整型變量轉(zhuǎn)換成指針; ?回收為指針?biāo)笇ο蠓峙浯鎯臻g; ?指針運算超出數(shù)組范圍。 例 72 分析下述程序片段的執(zhí)行結(jié)果 int *p , *q , u , v 。 q = amp。u 。 *q = 3 。 p = amp。v 。 *p = *q 。 *p = 5 。 p = q 。 *p = 7 。 p = NULL 。 *p = 3 。 p: q: u: v: amp。u 3 amp。v 3 5amp。u7NULL *p=3發(fā)生錯誤,因為 p 不指向任何變量 167。 指針運算 ? 求地址 amp。 “amp?!?運算符用來求被操作對象的地址。 例子 amp。x表示變量 x在內(nèi)存中的存放地址 若 x的地址為 ABD0,則 amp。x的值為 ABD0, “ amp?!钡膬?yōu)先級為 15 。 ? 取內(nèi)容 * “ *”與“ amp?!被槟孢\算 “ *”運算訪問地址表達式所指變量。 例子: “ x=*p”是將指針 p所指變量的值送入變量 x中;“ *p=5”是將 5送入指針 p所指變量中。 “ *”的優(yōu)先級也為 15 。 ? 賦值 = 可以把一個指針值賦值給某個指針變量。所謂指針值是指向某變量指針(變量的地址)或函數(shù)的指針。 例子: int *px , x。 px=amp。x。 /* 指針 px指向變量 x*/ px=NULL。 /* 為 px賦空指針 */ px=(int*)4800。 /* 將地址 4800賦給 px, 而不是整數(shù)類型 4800 */ ? 加 +( ++) 如果指針值指向數(shù)組的一個成分, C允許對相應(yīng)指
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1