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

正文內(nèi)容

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

2024-10-28 20:13 本頁面
 

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