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

正文內(nèi)容

程序設(shè)計(jì)基礎(chǔ)c語(yǔ)言中ppt(已修改)

2024-10-28 20:13 本頁(yè)面
 

【正文】 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言)中 東北大學(xué)高級(jí)語(yǔ)言程序設(shè)計(jì)課程組 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 指針 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 3 ? 指針是C語(yǔ)言的重要概念之一 ? 它使C語(yǔ)言比之其它程序設(shè)計(jì)語(yǔ)言更具特色 ? 深入理解C語(yǔ)言特性 ? 指針是學(xué)習(xí)使用C語(yǔ)言的難點(diǎn) ? 指針是 C語(yǔ)言的一個(gè)重要概念 ? 正確而靈活地使用指針 ? 有效地描述各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu) ? 動(dòng)態(tài)地分配內(nèi)存空間 ? 自由地在函數(shù)之間傳遞各種類(lèi)型的數(shù)據(jù) ? 使程序簡(jiǎn)潔、緊湊,執(zhí)行效率高 ? 指針是 C提供的一種數(shù)據(jù)結(jié)構(gòu) ? 屬于簡(jiǎn)單數(shù)據(jù)類(lèi)型 ? 它的意義和作用明顯又不同于一般的數(shù)據(jù)類(lèi)型 概述 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 4 A 直接 B A 間接 ? 直接和間接的含義 ? 內(nèi)存 ?即內(nèi)部存儲(chǔ)器,是由內(nèi)存單元組成 ?特點(diǎn) ? 存儲(chǔ)單元是線(xiàn)性連續(xù)的 ? 存儲(chǔ)單元的最小單位為字節(jié) …… …… 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 5 ? 內(nèi)存 ? 計(jì)算機(jī)的內(nèi)存中的每一個(gè)字節(jié)都有一個(gè)編號(hào) ? 所有的內(nèi)存單元都要統(tǒng)一進(jìn)行“編號(hào)” ? 這個(gè)編號(hào)就是該字節(jié)在整個(gè)內(nèi)存中的“地址” ? 所有的內(nèi)存單元都要有地址 ? 每一內(nèi)存單元具有唯一的內(nèi)存地址 ? 系統(tǒng)為每一個(gè)已定義的變量分配一定存儲(chǔ)空間 ? 使變量名與內(nèi)存的一個(gè)地址相對(duì)應(yīng) ? 通過(guò)地址我們就能夠訪問(wèn)該地址所標(biāo)識(shí)的存儲(chǔ)單元 ? 程序處理過(guò)程 ? 需要根據(jù)地址取出變量所對(duì)應(yīng)的內(nèi)存單元中存放的值 ? 參與計(jì)算 /操作 ? 處理結(jié)果存入相應(yīng)的變量名所對(duì)應(yīng)的內(nèi)存單元 …… …… 0 1 2 3 … 2021 地址 45 變量?jī)?nèi)容 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 6 ? 計(jì)算機(jī)的尋址方式 ?直接尋址 ?間接尋址 存入 /取出 數(shù)據(jù) 數(shù)據(jù) 內(nèi)存 地址 … 1003 1004 1008 100C 存入 /取出 B單元 內(nèi)存 地址 … 1050 1051 … 3020 3021 … 地 址 數(shù)據(jù) 數(shù)據(jù) A單元 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 7 ? C語(yǔ)言如何處理? ? 高級(jí)語(yǔ)言中的變量具有三個(gè)屬性 ? 變量的名、變量的值、變量的地址 ? 編程者 使用 c程序的 一個(gè)變量 ? 定義變量的數(shù)據(jù)類(lèi)型 ? 數(shù)據(jù)類(lèi)型決定了一個(gè)變量在內(nèi)存中所占用的存儲(chǔ)空間的大小 ? 變量在內(nèi)存中總是占用幾個(gè)連續(xù)的字節(jié) ? 定義變量名 ? C語(yǔ)言的編譯系統(tǒng)會(huì)根據(jù)變量的數(shù)據(jù)類(lèi)型為該變量分配內(nèi)存單元 ? 確定變量的地址 ? 變量的地址就是為變量分配的內(nèi)存單元的起始編號(hào) ? 就可以通過(guò)變量名對(duì)內(nèi)存中變量對(duì)應(yīng)的地址進(jìn)行操作 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 8 2021 2021 2021 2021 2021 2021 2021 2021 地址 變量名 變量類(lèi)型 字節(jié)數(shù) i int 2 10 ?a? pi float 4 ch char 1 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 9 ? C語(yǔ)言如何處理? ? 直接訪問(wèn) ? 通過(guò)變量名訪問(wèn)數(shù)據(jù)的方式稱(chēng)為 直接訪問(wèn) ? 例如: printf(%d, n)。 /* 通過(guò)變量名訪問(wèn)變量 n */ ? 間接訪問(wèn) ? 如果將變量 n的地址存放在另一個(gè)變量 pn中,通過(guò)訪問(wèn)變量 pn,間接達(dá)到訪問(wèn)變量 i的目的,這種方式稱(chēng)為變量的 間接訪問(wèn) ? 在 C語(yǔ)言中,間接尋址方式訪問(wèn)內(nèi)存是通過(guò)指針變量實(shí)現(xiàn)的 ? 指針變量通過(guò)直接尋址方式訪問(wèn)獲得的是一個(gè)地址值 ? 在該地址起始的一個(gè)存儲(chǔ)單元中存放程序需要的數(shù)據(jù) 1010 2021 2021 1010 300 1012 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 10 ? 定義 ? 用于指向其他變量的變量 ? 指針變量是一個(gè)變量 ? 和普通變量一樣占用一定的存儲(chǔ)空間 ? 該存儲(chǔ)空間存放的是一個(gè) 地址值而 不是 普通的數(shù)據(jù)值 ? 指針變量是一個(gè) 地址 變量 ? 指針變量的值是一個(gè)內(nèi)存單元的地址 ? 它指向另一個(gè)變量的值 ? 指針就是地址 ? 當(dāng)將變量的地址存入指針變量后,就說(shuō) 這個(gè)指針指向了該變量 ? 指針變量只能存放某一數(shù)據(jù)類(lèi)型的變量 ? 問(wèn)題? ? 變量的類(lèi)型和指向變量的類(lèi)型之間的區(qū)別? 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 11 ? 指針變量的聲明 ? 指針變量與一般的變量的區(qū)別 ? 格式 數(shù)據(jù)類(lèi)型名 *指針變量名; ? 說(shuō)明 ? 數(shù)據(jù)類(lèi)型表示指針?biāo)?指向的數(shù)據(jù) 的數(shù)據(jù)類(lèi)型 ? 提示:不是指針變量的數(shù)據(jù)類(lèi)型 ? *是指針的標(biāo)志,表示它后面的變量名是指針類(lèi)型 ? 例 ? int *i_p; /*定義了指針變量 i_p ,指向的對(duì)象類(lèi)型為整型 */ ? char *cp; /*定義了指針變量 cp, 指向的對(duì)象類(lèi)型為字符型 */ 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 12 ? 指針變量的聲明 ? 提示 ? 聲明語(yǔ)句的 *只能用于指針變量 ? 這種表示方式說(shuō)明被聲明的變量是一個(gè)指針 ? *不針對(duì)聲明語(yǔ)句中的所有變量 ? 每一個(gè)指針都必須在其名字前面有一個(gè)前綴 *聲明 ? 例如: int *pt1, pt2; ? pt2為整型變量而不是整型指針變量 ? 指針變量名是 pt1而不是 *pt1 ? 指針變量只能指向定義時(shí)規(guī)定的類(lèi)型變量 ? 只有同一數(shù)據(jù)類(lèi)型的地 址才能存放在指向該類(lèi)型變量的指針變量中 ? 例如: int *ip; /*ip指針變量只能存放整型變量的地址 */ 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 13 ? 指針變量的聲明 ? 提示 ? 在定義指針時(shí)可以用 void將指針定義為空類(lèi)型 ? 不指定指針指向一個(gè)確定的類(lèi)型 ? 區(qū)分“值”與“內(nèi)容”的含義 ? 例如 ? 整型變量是內(nèi)容為 整型數(shù)值 的變量 ? 整型指針變量是存放整型變量 地址 的變量 ? 在引用指針變量前必須首先讓指針指向一個(gè)變量 ? 這一點(diǎn)非常重要 ? 定義指針變量后,并未確定該變量指向何處,該變量的值是不確定的 指針 P 指針變量 p的地址 內(nèi)存單元 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 14 ? 指針變量初始化 ? 在使用指針變量時(shí),要首先對(duì)指針變量進(jìn)行初始化,讓指針變量指向一個(gè)具體的變量 ? 初始化的方式 ? 使用賦值語(yǔ)句 ? 例 ? int i, *pi。 /* 說(shuō)明指針變量 pa和變量 a */ pi=amp。i。 /*使用取地址符 amp。把變量 i的 地址 賦值給指針變量: pi指向了整型變量 i */ ? 說(shuō)明指針變量的時(shí)候同時(shí)進(jìn)行 ? 例: 使用 先聲明變量 的地址 ? int i, *pi=amp。i; ? 問(wèn)題? ? 寫(xiě)成 int *pa。 *pa=amp。a。會(huì)出現(xiàn)什么問(wèn)題? 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 15 ? 指針變量初始化 ? 在使用指針變量時(shí),要首先對(duì)指針變量進(jìn)行初始化,讓指針變量指向一個(gè)具體的變量 ? 初始化的方式 ? 給指針變量賦空值(賦值為符號(hào)常量 NULL ) ? 例 ? p=NULL。/*表示指針 p為空,沒(méi)有指向任何對(duì)象 */ ? 一般情況下給沒(méi)有初始值的指針變量賦值為 NULL ? 實(shí)際上, NULL是整數(shù) 0,系統(tǒng)保證 0單元不存儲(chǔ)任何數(shù)據(jù)的值(地址) ? NULL是頭文件 以及其它幾個(gè)頭文件中定義的符號(hào)常量 指針 P 空地址 NULL 指針變量 內(nèi)存單元 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 16 ? 指針變量初始化 ?提示 ? 在使用指針之前一定要對(duì)其進(jìn)行初始化 ?否則程序不知道指向何處 ?系統(tǒng)在執(zhí)行程序時(shí)會(huì)給出如下的信息 ? runtime error R6001——null pointer assigment ?或者引起更嚴(yán)重的錯(cuò)誤 ——系統(tǒng)崩潰 ? 對(duì)未使用的指針應(yīng)該賦以空值 NULL ?表明它未指向任何地方 ?這并不是對(duì)指針的初始化 ?只是 表示該指針未被使用而已 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 17 ? 指針變量初始化 ? 提示 ? 一個(gè)指針變量賦空值與不賦值是完全不同的概念 ? 前者是有不指向任何變量的地址 ? 后者是一個(gè)不確定的隨機(jī)值 ? 這時(shí)指針可能指向一個(gè)事先未指定的數(shù)據(jù) ? 利用空指針可以簡(jiǎn)化程序代碼、提高效率 ? 指針變量應(yīng)具有無(wú)符號(hào)整型類(lèi)型的值 ? 存放的是地址 ? 由于地址本身的特征,不能將一個(gè)整型值賦給一個(gè)指針變量。同樣也不能將指針變量的值賦給一個(gè)整型變量 ? 例如: int *p; p=2021;(非法) 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 18 ? 指針變量初始化 ? 提示 ? 用 void將指針定義為空類(lèi)型 ? 即不指定指針指向一個(gè)確定的類(lèi)型 ? 例如: void *p; /*表示指針變量 P不指向一個(gè)確定的類(lèi)型 */ ? 它的作用僅用來(lái)存放一個(gè)地址 ? 作用 ? 任何類(lèi)型的指針都可以賦給指向 void類(lèi)型的指針 ? 指向 void類(lèi)型的指針也可以賦給任何類(lèi)型的指針 ? 但是:不能復(fù)引用 void*類(lèi)型的指針 ? 編譯器不能根據(jù)類(lèi)型確定它引用的字節(jié)數(shù) ? 常見(jiàn)錯(cuò)誤 ? 將一種類(lèi)型的指針賦給另一種類(lèi)型的指針,而這兩種指針都不是 void*類(lèi)型 【 例 】 定義指針變量 void *p2; int *p1, i=5; p1=amp。i; p2=p1; 演示 91。 C 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 19 ? 指針變量的運(yùn)算 ? C語(yǔ)言提供的指針運(yùn)算 ? 取地址運(yùn)算( amp。) ? 作用是取變量的地址 ? 運(yùn)算對(duì)象必須是(任意類(lèi)型的)變量 ? 例如 ? amp。i /*表示求變量 i的地址 */ ? int x=3, *p。 p=amp。x /* amp。x表示?。牡刂罚瑢⒆兞浚刂焚x給指針變量 p */ ? 提示 ? amp。是一個(gè)單目運(yùn)算符,它返回變量的地址 ? amp。的操作數(shù)必須是一個(gè)變量 ? 取地址運(yùn)算符“ amp?!笔侨〔僮鲗?duì)象的地址而不是其值 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 20 ? 指針變量的運(yùn)算 ? C語(yǔ)言提供的指針運(yùn)算 ? 取內(nèi)容運(yùn)算( *) ? 運(yùn)算對(duì)象必須是指針(該指針?biāo)赶虻膶?duì)象可以是任意類(lèi)型) ? 作用是取指針?biāo)赶蜃兞康膬?nèi)容。 *也稱(chēng)為“間接引用運(yùn)算符”或“指針的復(fù)引用” ? 例如 ? a=*prt。 /*表示指針 prt所指向變量的內(nèi)容賦 a*/ ? int a=3, *p, x。 pa=amp。a。 ? x=*pa。 /* *pa表示取指針變量 pa所指單元的內(nèi)容,即變量 a的值,則 x=3 */ 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 21 ? 指針變量的引用 ? 當(dāng)指針變量定義和賦值之后,引用變量的方式 ? 用變量名直接引用 ? 例如 ? scanf(“%d”,amp。a)。/*在函數(shù)中直接使用變量 a的地址 */ ? 通過(guò)指向變量的指針間接引用 ? 利用指針變量,提供對(duì)變量的一種“間接訪問(wèn)”形式 ? 指針變量的引用形式 *指針變量 ? 含義是指針變量所指向的值 ? 例如 ? int a=3,*pa。 pa=amp。a。 /* 指針 pa指向變量 a*/ printf(%d\n,*pa)。 /* 通過(guò) * 運(yùn)算符實(shí)現(xiàn)間接訪問(wèn) */ 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 22 ? 指針變量的引用 ?例 :用指針變量進(jìn)行輸入輸出 main() { int *p, m; scanf( “ %d”, amp。m); p=amp。m; printf( “ %d”, *p); } main() { int *p, m; p=amp。m; scanf( “ %d”, p ); printf( “ %d”, m ); } 運(yùn)行結(jié)果完全一樣。請(qǐng)思考一下若將程序修改為如下形式: main() { int *p, m; scanf( “ %d”, p ); p=amp。m; printf( “ %d”, m ); }會(huì)產(chǎn)生什么結(jié)果? 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 23 include main() { int a, *aptr。 a=7。 aptr=amp。a。 pri
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1