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

正文內(nèi)容

[理學(xué)]c語言第8章(已修改)

2024-12-20 00:44 本頁面
 

【正文】 《 C語言程序設(shè)計 》 第 8章 指針 C語言程序設(shè)計 第 8章 指針 2 本章主要內(nèi)容 ? 變量的地址和指針 ? 指針變量的定義 ? 指針運算 ? 指針與數(shù)組 ? 指針與函數(shù) ? 指針數(shù)組和指向指針的指針 C語言程序設(shè)計 第 8章 指針 3 ? 計算機內(nèi)的存儲部件,活動中的所有指令和數(shù)據(jù)都保存在內(nèi)存內(nèi) ? 速度快,但是掉電即失 ? 可以隨機訪問 ?只要指名要訪問的內(nèi)存單元的 地址 ,就可以立即訪問到該單元 ?地址 是一個無符號整數(shù)(通常用 16進制數(shù)),其字長與主機相同 ?內(nèi)存中的每個字節(jié)都有唯一的一個地址 內(nèi)存地址 C語言程序設(shè)計 第 8章 指針 4 指針 ? 鐵桿 C/C++程序員最摯愛的武器: 指針 ? 指針造就了 C/C++的高效和強大 ? 很多不可能的任務(wù)由指針完成 ? 但如果指針使用不當(dāng)會產(chǎn)生致命的錯誤,使程序無法運行。因此,初學(xué)者要全面掌握指針的有關(guān)內(nèi)容。 C語言程序設(shè)計 第 8章 指針 5 ? 定義一個變量時: ?首先要定義變量的數(shù)據(jù)類型:數(shù)據(jù)類型決定了一個變量在內(nèi)存中所占用的存儲空間的大小。 ?其次要定義變量名。 C語言程序設(shè)計 第 8章 指針 6 ? 地址和指針 ?變量與地址 程序中 : int i,j,k。 內(nèi)存中每個字節(jié)有一個編號 地址 …... …... 2022 … 2022 內(nèi)存 0 2022 i 編譯或函數(shù)調(diào)用時為其分配內(nèi)存單元 變量 是對程序中數(shù)據(jù) 存儲空間的抽象 C語言程序設(shè)計 第 8章 指針 7 ?直接訪問與間接訪問 ? 直接訪問:通過變量名來訪問一個變量的值 ? 間接訪問:通過存放變量地址的變量去訪問變量 例 i=10。 直接訪問 指針變量 …... …... 2022 3000 … 整型變量 i 10 變量 i_pointer … 2022 … 2022 例 *p=20。 間接訪問 20… C語言程序設(shè)計 第 8章 指針 ? 定義一個指針變量需要解決兩個問題: ?說明指針變量的名字 ?說明指針變量指向的數(shù)據(jù)類型,即指針變量指向的變量的數(shù)據(jù)類型。 8 ? 指針變量說明的形式為: 類型說明符 *變量名 1, *變量名 2…。 C語言程序設(shè)計 第 8章 指針 ? 例如 : int *p。 float x, *q。 9 C語言程序設(shè)計 第 8章 指針 10 ? 說明: ?變量名前的“ *”在定義時不能省略,它是說明其后變量是指針類型變量的標(biāo)志。 ?其它類型的變量允許和指針變量在同一個語句中定義,例如: int m,n,*p,*q。 ?指針定義中的“數(shù)據(jù)類型”是指針指向的目標(biāo)變量的數(shù)據(jù)類型,而不是指針變量的數(shù)據(jù)類型。指針變量的數(shù)據(jù)類型由“ *”說明為指針類型。 C語言程序設(shè)計 第 8章 指針 ? ? ? 賦值運算 ? void指針 11 C語言程序設(shè)計 第 8章 指針 12 ?amp。與 *運算符 ? 含義 含義 : 取變量的地址 單目運算符 結(jié)合性 :自右向左 含義 : 取指針?biāo)赶蜃兞康膬?nèi)容 單目運算符 結(jié)合性 :自右向左 ? 兩者關(guān)系:互為 逆運算 ? 理解 …... …... 2022 3000 … 整型變量 i 10 變量 i_pointer … 2022 … 2022 指針變量 p指針變量,它的內(nèi)容是地址量 *p指針的 目標(biāo)變量 ,它的內(nèi)容是數(shù)據(jù) amp。p指針變量占用內(nèi)存的地址 2022 10 p *p amp。i i p amp。i i *p = amp。i i = *p …... C語言程序設(shè)計 第 8章 指針 ? 例如: int x=10, *p, y。 p=amp。x。 y=*p。 ? 注意:此例中第 1個語句和第 3個語句都出現(xiàn)了“ *p”,但意義是不同的。這是因為“ *”在類型說明和在取值運算中的含義是不同的。在第一個語句中的“ *p”表示將變量 p說明為指針變量,用“ *”以區(qū)別于一般變量,這里是說明指針變量 p。而在第 3個語句中的“ *p”是使用指針變量 p,此時“ *”是運算符,表示取指針?biāo)赶虼鎯卧膬?nèi)容,即對 p進行間接存取運算,取變量 x的值。 13 C語言程序設(shè)計 第 8章 指針 賦值運算 14 指針變量的初始化 ? 指針變量的初始化,就是在定義指針變量的同時為其賦初值。由于指針變量是指針類型,所賦初值應(yīng)是一個地址值。其一般格式如下: 數(shù)據(jù)類型 *指針變量名 1=地址 1, *指針變量名 2=地址 2… 。 其中的地址形式有多種,如: amp。變量名、數(shù)組名、其它的指針變量等。 C語言程序設(shè)計 第 8章 指針 賦值運算 15 ? “ amp?!边\算符是取地址運算符, “ amp。變量名 ” 也可以直接理解為變量的地址。例如 : int i。 int *p=amp。i。 這兩個語句分別定義了整型變量 i和指向整型變量 i的指針變量 p,并且將變量 i的地址作為 p的初值。 char s[20]。 char *str=s。 這兩個語句分別定義了字符型數(shù)組變量 s和指向字符型變量的指針變量 str,并且將字符數(shù)組 s的首地址作為 str的初值。 C語言程序設(shè)計 第 8章 指針 賦值運算 ? 說明: ?( 1)不能用尚未定義的變量給指針變量賦初值,例如下面的用法是錯誤的: float *q=amp。x。 float x。 ?( 2)當(dāng)用一個變量地址為指針變量賦初值時,該變量的數(shù)據(jù)類型必須與指針變量指向的數(shù)據(jù)類型一致。例如下面的用法是錯誤的,因為 m和 p指向的數(shù)據(jù)類型不匹配。 float m。 int *p=amp。m。 16 C語言程序設(shè)計 第 8章 指針 賦值運算 ? ( 3)除 0之外,一般不把其他整數(shù)作為初值賦給指針變量。程序運行期間,變量的地址是由計算機分配的,當(dāng)用一個整數(shù)為一個指針變量賦初值后,可能會造成難以預(yù)料的后果。當(dāng)用 0對指針賦初值時,系統(tǒng)會將該指針變量初始化為一個空指針,不指向任何對象。 17 C語言程序設(shè)計 第 8章 指針 18 賦值運算 使用賦值語句賦值 一般格式如下: 指針變量 =地址; 例如: int m=100,*p,*q。 p=amp。m。 /*將變量 m的地址賦給指針變量 p*/ C語言程序設(shè)計 第 8章 指針 19 例如: int a=10,b=20,*p1,*p2。 p1=amp。a。 p2=amp。b。 1 0p 1a2 0p 2b有語句:p2=p1。 1 0p 1a2 0p 2bC語言程序設(shè)計 第 8章 指針 20 例如: int a=10,b=20,*p1,*p2。 p1=amp。a。 p2=amp。b。 1 0p 1a2 0p 2b有語句:*p2=*p1。 1 0p 1a1 0p 2bC語言程序設(shè)計 第 8章 指針 void指針 ? 空指針就是不指向任何對象的指針,表示該指針沒有指向任何內(nèi)存單元。構(gòu)造空指針有下面兩種方法 ? 賦 0值,這是唯一的允許不經(jīng)轉(zhuǎn)換就賦給指針的數(shù)值。 ? 賦 NULL值, NULL的值等于 0,兩者等價。 ? 例如 : define NULL 0 int *p。 p=0。 或 p=NULL。 21 空指針常常用來初始化指針,避免野指針的出現(xiàn)。 C語言程序設(shè)計 第 8章 指針 void指針 ? 如果一個指針被聲明為 void類型,可以稱之為“無類型指針”,或者就稱之為 void指針。 22 2. void指針 ? 無類型指針可以指向任意類型的數(shù)據(jù)。 int * a, *b。 float *c。 void * d。 d = a。 /*正確 */ d = c。 /*正確 */ 因為 d是 void指針,它可以指向任意類型的數(shù)據(jù),所以任意類型的指針都可以給 d賦值。 C語言程序設(shè)計 第 8章 指針 void指針 23 2. void指針 int x = 100。 void * p = amp。x。 /*定義 void指針 p指向 x */ int *q = NULL。 /*定義整型指針 q */ /*printf(*p =%d\n,*p)。 錯誤,非法使用指針 p */ printf(*p =%d\n ,*(int *)p)。 /*正確,輸出 p指向單元內(nèi)容 */ /*q = p。 錯誤,非法, void指針賦給整型指針 */ q = (int *)p。 /*正確,合法, void指針賦給整型指針 */ printf(“*q =%d\n”,*q)。 /*輸出指針 q指向單元內(nèi)容 */ 雖然 void指針可以指向任意類型的數(shù)據(jù),但是在使用 void指針時必須對其進行強制類型轉(zhuǎn)換,將 void指針轉(zhuǎn)換成它所指向單元的實際類型,然后才可以使用。另外,將 void指針賦值給其它指針時也需要將void指針強制類型轉(zhuǎn)換為所需要類型的指針。C語言程序設(shè)計 第 8章 指針 ? ? ? 24 C語言程序設(shè)計 第 8章 指針 ? 在數(shù)組中,可以通過數(shù)組的下標(biāo)唯一確定了某個數(shù)組元素在數(shù)組中的順序和存儲地址,這種訪問方式也稱為 “下標(biāo)”表示法 。例如: int a[5] = {1, 2, 3, 4
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1