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

正文內(nèi)容

c語(yǔ)言程序設(shè)計(jì)教程(三)ppt-展示頁(yè)

2024-10-25 16:02本頁(yè)面
  

【正文】 則。 ? (2). 指針和整數(shù)可進(jìn)行加、減運(yùn)算 ? 設(shè) p是指向某一數(shù)組元素的指針,開(kāi)始時(shí)指向數(shù)組的第 0號(hào)元素,設(shè) n為一整數(shù),則 p+n就表示指向數(shù)組的第 n號(hào)元素 (即下標(biāo)為 n的元素 )。例如兩個(gè)指針變量 p, q指向具有同種數(shù)據(jù)類型數(shù)組,則 , ,=, =, ==等關(guān)系運(yùn)算符都能進(jìn)行正常運(yùn)算。 ? } 指針的聲明 (續(xù) ) ? 運(yùn)行結(jié)果: 調(diào)用 swap()前: iTest1=88,iTest2=66 調(diào)用 swap()中交換前: *iData1_ptr=88,*iData2_ptr=66 調(diào)用 swap()中交換后: *iData1_ptr=66,*iData2_ptr=88 調(diào)用 swap()后: iTest1=66,iTest2=88 ? 在例 83中,由于實(shí)參傳遞給形參的不是數(shù)據(jù)而是地址,被調(diào)函數(shù) swap()實(shí)際上是通過(guò)指針對(duì)調(diào)用函數(shù)中的變量 iTest1, iTest2所存儲(chǔ)的數(shù)據(jù)進(jìn)行操作,操作的結(jié)果改變了調(diào)用函數(shù)中有關(guān)變量的數(shù)據(jù)(如:對(duì)變量 iTest1, iTest2實(shí)行了數(shù)據(jù)交換)。 ? printf(“調(diào)用 swap()中交換后:*iData1_ptr=%d,*iData2_ptr=%d\n, ? *iData1_ptr,*iData2_ptr)。 ? *iData1_ptr=*iData2_ptr。 ? printf(“調(diào)用 swap()中交換前:*iData1_ptr=%d,*iData2_ptr=%d\n, ? *iData1_ptr,*iData2_ptr)。 ? printf(“調(diào)用 swap()后: iTest1=%d,iTest2=%d\n,iTest1,iTest2)。iTest1,amp。 ? printf(“調(diào)用 swap()前: iTest1=%d,iTest2=%d\n,iTest1,iTest2)。 ? include ? int swap(int *iData1_ptr,int *iData2_ptr)。因此,在形實(shí)結(jié)合傳送地址時(shí),要求實(shí)參和形參都是相同數(shù)據(jù)類型的地址量。 /*px的內(nèi)容加上 1之后賦給 y [++*px相當(dāng)于 ++(*px)]*/ ? y=*px++。 ? y=*px+5。x。 ? 指針變量也可以出現(xiàn)在表達(dá)式中。",前者不僅速度慢而且目的不明確。因?yàn)橥ㄟ^(guò)指針要訪問(wèn)哪一個(gè)變量,取決于指針的值 (即指向 ),例如:" *p2= *p1。?a?p2m?b?p1n圖 83 p2 = p1 時(shí)的情形 ? 就使 p2與 p1指向同一對(duì)象 n,此時(shí) *p2就等于 n,而不是 m,圖 83所示: ‘a(chǎn)’ p2 m ‘b’ p1 n 圖 83 p2 = p1 時(shí)的情形 指針的聲明 (續(xù) ) ? 運(yùn)行結(jié)果: ? n=a,m=b,p1=a,p2=b ? p2=p1=n=a,m=b,p2=a,p1=a ? ② 當(dāng) Flag=false時(shí),執(zhí)行如下表達(dá)式: ? *p2=*p1。 ? printf(*p2=*p1=n=%c,m=%c,p2=%c,p1=%c\n,n,m,*p2,*p1)。 ? printf(p2=p1=n=%c,m=%c,p2=%c,p1=%c\n,n,m,*p2,*p1)。 ? printf(n=%c,m=%c,p1=%c,p2=%c\n,n,m,*p1,*p2)。 ? p2=amp。 ? p1=amp。 ? m=39。 ? n=39。 ? include ? void main() ? { ? bool Flag=true。 ? 另外,指針變量和一般變量一樣,存放在它們之中的值是可以改變的,也就是說(shuō)可以改變它們的指向。下面的賦值是不合法的: ? int *ip。因此,當(dāng)調(diào)用一個(gè)要返回指針的函數(shù)時(shí) (以后會(huì)講到 ),常使用返回值為 NULL來(lái)指示函數(shù)調(diào)用中某些錯(cuò)誤情況的發(fā)生。 指針的聲明 (續(xù) ) ? 對(duì)于外部或靜態(tài)指針變量在聲明中若不帶初始化項(xiàng),指針變量被初始化為 NULL,它的值為 0。指針變量的賦值只能賦予地址,決不能賦予任何其它數(shù)據(jù),否則將引起錯(cuò)誤。 ? 指針變量同普通變量一樣,使用之前不僅要聲明說(shuō)明,而且必須賦予具體的值。 ? 可見(jiàn), amp。 ? *(amp。 指針的聲明 (續(xù) ) ? 例如: ? amp。a。 ? int *p。a。 ? 設(shè)有指向整型變量的指針變量 p,如要把整型變量 a的地址賦予 p可以有以下兩種方式: 指針的聲明 (續(xù) ) ? 1.指針變量初始化的方法 ? int a。b[2]表示數(shù)組元素 b[2]的地址。 變量名或數(shù)組元素名; ? 如: ? amp。 來(lái)表示變量的地址。 ? *:指針運(yùn)算符(或稱 “ 間接訪問(wèn) ” 運(yùn)算符)。下面介紹兩個(gè)與地址有關(guān)的運(yùn)算符: ? amp。聲明指針的目的是為了通過(guò)指針去訪問(wèn)內(nèi)存單元。但常把指針變量簡(jiǎn)稱為指針。 ? 嚴(yán)格地說(shuō),一個(gè)指針就是一個(gè)地址,是一個(gè)常量。d的類型是指向雙精度數(shù) d的指針,而 amp。x的值是變量 x的地址。也就是說(shuō),若x為一整型變量,則表達(dá)式 amp。x的類型,而用 “ 地址 ” 作為 amp。變量的地址雖然在形式上好像類似于整數(shù),但在概念上不同于以前介紹過(guò)的整數(shù),它屬于一種新的數(shù)據(jù)類型,即指針類型。因此, *ip訪問(wèn)的是地址 1310588的存貯區(qū)域 (因?yàn)槭钦麛?shù),實(shí)際上是從 1310588開(kāi)始的兩個(gè)字節(jié) ),它就是 i所占用的存貯區(qū)域,所以上面的賦值表達(dá)式等價(jià)于: ? x=i。 1310588 變量 i 指針 ip 1310588 20 圖 81 給指針變量賦值 指針、變量的指針和指針變量 (續(xù) ) ? 以后我們便可以通過(guò)指針變量 ip間接訪問(wèn)變量 i,例如: ? x= *ip。i。 i, x中可存放整數(shù),而 ip中只能存放整型變量的地址。 ? int *ip。s data is: 20 ? x=20 ? 現(xiàn)在我們對(duì)例 81進(jìn)行代碼分析,逐步深入了解什么是指針及其指針變量的應(yīng)用意義。s address is: 1310588 ? i39。 ? } 指針、變量的指針和指針變量 (續(xù) ) ? 運(yùn)行結(jié)果: ? i39。s data is: %d \n,*ip)。s data is: %d\n,i)。s address is: %d\n,ip)。i)。 ? printf(i39。i。 ? int *ip。 指針、變量的指針和指針變量 ? 例 81 指針及其指針變量應(yīng)用舉例。本章主要介紹如下內(nèi)容:指針的概念和運(yùn)算、指針和數(shù)組、指針函數(shù)和函數(shù)指針、多級(jí)指針以及指針的實(shí)例舉例。它為函數(shù)間各類數(shù)據(jù)的傳遞提供了簡(jiǎn)捷便利的方法。C語(yǔ)言程序設(shè)計(jì)教程 (三 ) 第 8章 指針 第 9章 復(fù)合數(shù)據(jù)類型 第 8章 指 針 ? C語(yǔ)言的重要特性之一就是指針操作。利用指針可以直接而快速的處理內(nèi)存中各種數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù),特別是數(shù)組、字符串、內(nèi)存的動(dòng)態(tài)分配等,并能象匯編語(yǔ)言一樣處理內(nèi)存地址。指針使 C程序簡(jiǎn)潔、緊湊、高效,但指針使用上的靈活性容易導(dǎo)致指針濫用而可能使程序失控。 指針基本概念及其指針變量的聲明 ? 在 C語(yǔ)言中,對(duì)于變量的訪問(wèn)形式之一,就是先求出變量的地址,然后再通過(guò)地址對(duì)它進(jìn)行訪問(wèn),這就是本節(jié)所要論述的指針及其指針變量。 ? include ? void main() ? { ? int i=20,x。 ? ip=amp。 ? x=*ip。s address is: %d\n,amp。 ? printf(ip39。 ? printf(i39。 ? printf(ip39。 ? printf( x=%d\n,x)。s address is: 1310588 ? ip39。s data is: 20 ? ip39。 ? int i=20,x。 ? 聲明了兩個(gè)整型變量 i, x,并對(duì)整型變量 i進(jìn)行初始化,賦初值為20,同時(shí)還聲明了一個(gè)指向整型數(shù)的指針變量 ip。我們把 i的地址賦給 ip,即: ? ip=amp。 指針、變量的指針和指針變量 (續(xù) ) ? 此時(shí)指針變量 ip指向整型變量 i,由運(yùn)行結(jié)果可知變量i的地址為 1310588(該地址是在 64位計(jì)算機(jī)上運(yùn)行得出的結(jié)果,不同的計(jì)算機(jī)得出的地址不同),這個(gè)賦值可形象理解為圖 81所示的聯(lián)系。 ? 運(yùn)算符 * 訪問(wèn)以 ip為地址的存貯區(qū)域,而 ip中存放的是變量 i的地址。 ? 所謂變量的指針,實(shí)際上指變量的地址。 指針、變量的指針和指針變量 (續(xù) ) ? 在 C語(yǔ)言中,一般用 “ 指針 ” 來(lái)指明這樣一個(gè)表達(dá)式:amp。x的值。x的類型是指向整數(shù)的指針,而 amp。同樣,若 double d;則 amp。d的值是雙精度變量 d的地址。而一個(gè)指針變量卻可以被賦予不同的指針值,是變量。為了避免混淆,我們約定: “ 指針 ” 是指地址,是常量; “ 指針變量 ” 是指取值為地址的變量。 指針的聲明 ? 在C語(yǔ)言中,變量的地址是由編譯系統(tǒng)分配的,對(duì)用戶完全透明,用戶不知道變量的具體地址。:取地址運(yùn)算符。 ? ① C語(yǔ)言中提供了地址運(yùn)算符 amp。 ? 其一般形式為: ? amp。a表示變量 a的地址, amp。變量本身必須預(yù)先說(shuō)明。 ? int *p=amp。 ? 2.賦值語(yǔ)句的方法 ? int a。 ? p= amp。 ? ② C語(yǔ)言中另一種與地址有關(guān)的運(yùn)算符是 *,其一般形式為: ? * 指針變量名或目標(biāo)變量地址; ? *運(yùn)算符要求運(yùn)算量是地址,含義為訪問(wèn)指定地址的目標(biāo)變量。(* px)含義為取指針 px的目標(biāo)變量的地址,就是 px。 x)含義為訪問(wèn)變量 x的地址指向的目標(biāo)變量,就是 x。運(yùn)算和 *運(yùn)算互為逆運(yùn)算。未經(jīng)賦值的指針變量不能使用,否則將造成系統(tǒng)混亂,甚至死機(jī)。 ? 指針變量的一般聲明為: ? 類型標(biāo)識(shí)符 *標(biāo)識(shí)符 ; ? 其中標(biāo)識(shí)符是指針變量的名字,標(biāo)識(shí)符前加了" *"號(hào),表示該變量是指針變量,而最前面的 “ 類型標(biāo)識(shí)符 ” 表示該指針變量所指向的變量的類型。在 C語(yǔ)言中規(guī)定,當(dāng)指針值為零時(shí),指針不指向任何有效數(shù)據(jù),有時(shí)也稱該指針為空指針。 ? 既然在指針變量中只能存放地址,那么在使用中就不能將一個(gè)整數(shù)值賦給一個(gè)指針變量。 ? ip=100。 指針的聲明 (續(xù) ) ? 例 82 指針應(yīng)用舉例。 ? char n,m,*p1,*p2。a39。b39。n。m。 指針的聲明 (續(xù) ) ? if(Flag) ? { ? p2=p1。 ? } ? if(!Flag) ? { ? *p2=*p1。 ? } ? } 指針的聲明 (續(xù) ) ? 由上述程序描述,建立如圖 82所示的聯(lián)系: ‘a(chǎn)’ p2 m ‘b’ p1 n 圖 82 賦值運(yùn)算結(jié)果 指針的聲明 (續(xù) ) ? ① 當(dāng) Flag=true時(shí),這時(shí)賦值表達(dá)式: ? p2=p1。 ? 則表示把 p1指向的內(nèi)容賦給 p2所指的區(qū)域,此時(shí)圖 82就變成圖84所示 : ‘a(chǎn)’ p2 m ‘a(chǎn)’ p1 n 圖 84 *p2 = *p1 時(shí)的情形 指針的聲明 (續(xù) ) ? 運(yùn)行結(jié)果: ? n=a,m=b,p1=a,p2=b ? *p2=*p1=n=a,m=a,p2=a,p1=a ? 通過(guò)指針訪問(wèn)它所指向的一個(gè)變量是以間接訪問(wèn)的形式進(jìn)行的,所以比直接訪問(wèn)一個(gè)變量要費(fèi)時(shí)間,而且不直觀。",實(shí)際上就是" m=n。但由于指針是變量,我們可以通過(guò)改變它們的指向,用以間接訪問(wèn)不同的變量,這就使程序代碼編寫(xiě)得更為簡(jiǎn)潔、有效。 指針的聲明 (續(xù) ) ? 例如: ? int x,y,*px=amp。 ? 指針變量 px指向整數(shù) x,則 *px可出現(xiàn)在 x能出現(xiàn)的任何地方。 /*表示把 x的內(nèi)容加 5并賦給 y*/ ? y=++*px。 /*相當(dāng)于 y = *px, (*px)++*/ ? 當(dāng)指針作為函數(shù)參數(shù)傳遞時(shí),參數(shù)傳遞的不是數(shù)據(jù)本身,而是數(shù)據(jù)的存儲(chǔ)地址。 ? 例如: 指針的聲明 (續(xù) ) ? 例 83 指針作為函數(shù)參數(shù)傳遞的應(yīng)用。 ? void main() ? { ? int iTest1=88,iTest2=66。 ? swap(amp。iTest2)。 ? } 指針的聲明 (續(xù) ) ? int swap(int *iData1_ptr,int *iData2_ptr) ? { ? int iTemp 。 ? iTemp=*iData1_ptr。 ? *iData2_ptr=iTemp。 ? return 0。 地址運(yùn)算 ? 指針允許的運(yùn)算方式有: ? (1). 指針在一定條件下可進(jìn)行比較 ? 這里所說(shuō)的一定條件是指兩個(gè)指針指向同種類型對(duì)象才有意義。若 p=
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1