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

正文內(nèi)容

c程序設(shè)計(jì)電子教案(下)ppt(已修改)

2024-12-19 21:48 本頁面
 

【正文】 計(jì)算機(jī)基礎(chǔ)教研室 第 8 章 指 針 重慶工學(xué)院計(jì)算機(jī)學(xué)院 第 8 章 指針 C程序設(shè)計(jì)中使用指針可以 : ?使程序簡(jiǎn)潔、緊湊、高效 ?有效地表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu) ?動(dòng)態(tài)分配內(nèi)存 ?得到多于一個(gè)的函數(shù)返回值 指針是一種特殊的數(shù)據(jù)類型; 指針概念是 C語言中較難理解和較難掌握的概念。 167。 要明白什么是指針,必須弄清楚數(shù)據(jù)在內(nèi)存中是如何存儲(chǔ)的,又是如何讀取的。 內(nèi)存區(qū)的每一個(gè)字節(jié)有一個(gè)編號(hào),這就是“ 地址 ” 。如果在程序中定義了一個(gè)變量,在對(duì)程序進(jìn)行編譯時(shí),系統(tǒng)就會(huì)給這個(gè)變量分配內(nèi)存單元。 167。 變量與地址 程序中 : int i。 float k。 內(nèi)存中每個(gè)字節(jié)有一個(gè)編號(hào) 地址 …... …... 2022 2022 2022 2022 內(nèi)存 0 2022 i k 編譯或函數(shù)調(diào)用時(shí)為其分配內(nèi)存單元 變量 是對(duì)程序中數(shù)據(jù) 存儲(chǔ)空間的抽象 …... …... 2022 2022 2022 2022 整型變量 i 10 變量 i_pointer 2022 2022 2022 ?指針與指針變量 ?指針:一個(gè)變量的地址 ?指針變量:專門存放變量地址的變量 在C語言中,指針是一種特殊的變量,它是存放地址的。 2022 指針 指針變量 變量的 內(nèi)容 變量的 地址 指針變量 變量 變量地址 (指針 ) 變量值 指向 地址存入 指針變量 ?變量的直接訪問與間接訪問 ?直接訪問:按變量地址存取變量值 ?間接訪問:通過存放變量地址的變量去訪問變量 例 i=3。 直接訪問 指針變量 …... …... 2022 2022 2022 2022 整型變量 i 10 變量 i_pointer 2022 2022 2022 2022 3 例 *i_pointer=20。 間接訪問 20 兩種訪問方式: 相當(dāng)于某人甲(系統(tǒng))要找某人乙(變量)來類比,有兩種方法: ( 1)甲知道乙在何處,直接去找就是(即直接訪問)。 ( 2)甲不知道乙在哪,但丙(指針變量)知道,此時(shí)甲可以這么做:先找丙,從丙處獲得乙的去向,然后再找乙(即間接訪問)。 指針變量 與其 所指向的變量 之間的關(guān)系 ?兩種訪問方式的特點(diǎn) 3 變量 i 2022 i_pointer *i_pointer i *i_pointer amp。i i_pointer i=3。 *i_pointer=3 167。 指針變量的定義和引用 ?指針變量的定義 ?一般形式: [存儲(chǔ)類型 ] 數(shù)據(jù)類型 *指針名; 合法標(biāo)識(shí)符 指針變量本身的存儲(chǔ)類型 指針的目標(biāo)變量的數(shù)據(jù)類型 表示定義指針變量 不是‘ *’運(yùn)算符 例 int *p1,*p2。 float *q 。 static char *name。 注意: int *p1, *p2。 與 int *p1, p2。 指針變量名是 p1,p2 ,不是 *p1,*p2 指針變量只能指向定義時(shí)所規(guī)定類型的變量 指針變量定義后, 變量值不確定 ,應(yīng)用前必須先賦值 ?指針變量的初始化 一般形式: [存儲(chǔ)類型 ] 數(shù)據(jù)類型 *指針名 =初始地址值 ; 賦給指針變量, 不是賦給目標(biāo)變量 例 int i。 int *p=amp。i。 變量必須 已說明過 類型 應(yīng)一致 例 int *p=amp。i。 int i。 例 int i。 int *p=amp。i。 int *q=p。 用已初始化指針變量作初值 例 main( ) { int i。 static int *p=amp。i。 .............. } (?) 不能用 auto變量的地址 去初始化 static型指針 例 main( ) { int i=10。 int *p。 *p=i。 printf(“%d”,*p)。 } 危險(xiǎn)! 例 main( ) { int i=10,k。 int *p。 p=amp。k。 *p=i。 printf(“%d”,*p)。 } 指針變量必須 先賦值 ,再使用 . …... …... 2022 2022 2022 2022 整型變量 i 10 指針變量 p 2022 2022 2022 隨機(jī) ?零指針與空類型指針 ?零指針: (空指針 ) ?定義 :指針變量值為零 ?表示: int * p=0。 p指向地址為 0的單元 , 系統(tǒng)保證該單元不作它用 表示指針變量值 沒有意義 define NULL 0 int *p=NULL: ?p=NULL與未對(duì) p賦值不同 ?用途 : ?避免指針變量的非法引用 ?在程序中常作為 狀態(tài) 比較 例 int *p。 ...... while(p!=NULL) { ...… } ?void *類型指針 ?表示 : void *p。 ?使用時(shí)要進(jìn)行 強(qiáng)制類型轉(zhuǎn)換 例 char *p1。 void *p2。 p1=(char *)p2。 p2=(void *)p1。 表示不指定 p是指向哪一種 類型數(shù)據(jù)的指針變 量 指針變量是一種特殊的變量,變量中存放的不是某種數(shù)據(jù)類型的數(shù)據(jù),而是另一個(gè)變量或常量的地址。 指針變量的操作主要包括: ( 1)取地址運(yùn)算? amp?!?和取內(nèi)容運(yùn)算? *? 1行 int num, *pn。 2行 pn=amp。num。 3行 *pn=100。 等效于 num=100。 注意: 1)第 3行, “ *” 作為訪問目標(biāo)變量的運(yùn)算符,表示 num內(nèi)容 2)第 1行,在定義指針時(shí), “ *” 作為說明符。 3)第 2行, “ amp?!弊鳛槿?num變量的地址 其中: “ amp?!焙?“ *” 互為逆運(yùn)算 例如: int x, *ptr=amp。x。 則 amp。(*ptr) 表示指針 ptr *(amp。x) 表示變量 x (具體描述見下頁) ?指針變量的引用與操作 ?amp。與 *運(yùn)算符 ?含義 含義 : 取變量的地址 單目運(yùn)算符 優(yōu)先級(jí) : 2 結(jié)合性 :自右向左 含義 : 取指針?biāo)赶蜃兞康膬?nèi)容 單目運(yùn)算符 優(yōu)先級(jí) : 2 結(jié)合性 :自右向左 ?兩者關(guān)系:互為 逆運(yùn)算 ?理解 …... …... 2022 2022 2022 2022 整型變量 i 10 變量 i_pointer 2022 2022 2022 2022 指針變量 i_pointer指針變量,它的內(nèi)容是地址量 *i_pointer指針的 目標(biāo)變量 ,它的內(nèi)容是數(shù)據(jù) amp。i_pointer指針變量占用內(nèi)存的地址 2022 10 i_pointer *i_pointer amp。i_pointer i i_pointer amp。i amp。(*i_pointer) i *i_pointer *(amp。i) i_pointer = amp。i = amp。(*i_pointer) i = *i_pointer = *(amp。i) ( 1)賦值運(yùn)算: 例如: int x, *p1,*p2。 p1=amp。x。 /*p1指針賦值 */ p2=p1。 /*p2指針賦值 */ ( 2)指針變量運(yùn)算: 指針變量:只有加或減的 操作 ( +, , ++, ) 指針由當(dāng)前所指向的位置向前或向后移動(dòng) n個(gè)數(shù)據(jù)元素的位置。 移動(dòng)后的實(shí)際地址為: p 177。 n*sizeof(數(shù)據(jù)類型 ) ( 3)指針的關(guān)系運(yùn)算 指向同種數(shù)據(jù)類型的指針可作關(guān)系運(yùn)算,表示它們所存放的地址之間的關(guān)系。 可使用的運(yùn)算符: , , = = , != 167。 指針和地址運(yùn)算 例 指針例題 main() { int a。 int *pa=amp。a。 a=10。 printf(a:%d\n,a)。 printf(*pa:%d\n,*pa)。 printf(amp。a:%x(hex)\n,amp。a)。 printf(pa:%x(hex)\n,pa)。 printf(amp。pa:%x(hex)\n,amp。pa)。 } 運(yùn)行結(jié)果: a:10 *pa:10 amp。a:f86(hex) pa:f86(hex) amp。pa:f88(hex) …... …... f86 f8a f8c f8b 整型變量 a 10 指針變量 pa f87 f88 f89 f86 指針賦值方法: amp。和指針相互賦值 例 輸入兩個(gè)數(shù),并使其從大到小輸出 main() { int *p1,*p2,*p,a,b。 scanf(%d,%d,amp。a,amp。b)。 p1=amp。a。 p2=amp。b。 if(ab) { p=p1。 p1=p2。 p2=p。} printf(a=%d,b=%d\n,a,b)。 printf(max=%d,min=%d\n,*p1,*p2)。 } 運(yùn)行結(jié)果: a=5,b=9 max=9,min=5 …... …... 指針變量 p1 指針變量 p 2022 2022 2022 2022 2022 指針變量 p2 整型變量 b 整型變量 a 5 2022 9 2022 2022 2022 2022 ?指針變量作為函數(shù)參數(shù) ——值傳遞 特點(diǎn): 不共享內(nèi)存 swap(int x,int y) { int temp。 temp=x。 x=y。 y=temp。 } main() { int a,b。 scanf(%d,%d,amp。a,amp。b)。 if(ab) swap(a,b)。 printf(\n%d,%d\n,a,b)。 } 例 將數(shù)從大到小輸出 …... …... 2022 2022 200A 2022 2022 2022 5 變量 a 變量 b (main) 9 變量 temp 變量 y 變量 x (swap) 5 5 9 5 9 COPY 值傳遞 運(yùn)行結(jié)果: 5, 9 swap(int *p1, int *p2) { int p。 p=*p1。 *p1=*p2。 *p2=p。 } main() { int a,b。 int *pointer_1,*pointer_2。 scanf(%d,%d,amp。a,amp。b)。 pointer_1=amp。a。 pointer_2=amp。b。 if(ab)swap(pointer_1,poi
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1