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

正文內(nèi)容

c程序設(shè)計(jì)指針ppt課件-展示頁

2025-01-28 19:19本頁面
  

【正文】 ointer1, 而不是賦給 *pointer1(即變量 a)。B。a?!笔菍?a和 B的地址分別賦給 pointer1和 pointer2?!焙汀?pointer2=amp。 (4) 第 6行“ pointer1=amp。它們前面的“ *”只是表示該變量是指針變量。 (3) pointer1和 *pointer2,請區(qū)分它們的不同含義。 圖 (2) 最后一行的 pointer1和 *pointer2就是變量 a和 B。a(即 a的地址 ), pointer2的值為 amp。程序第 6行的作用就是使 pointer1指向 a, pointer2指向 B,見圖 。只是提供兩個(gè)指針變量,規(guī)定它們可以指向整型變量。 printf(%D, %D\n, *pointer1, *pointer2)。B。a。B=10。 int pointer1, *pointer2。 例 。 例如: amp。: 取地址運(yùn)算符。下面的賦值是不合法的: pointer1=100。需要特別注意的是,只有整型變量的地址才能放到指向整型變量的指針變量中?!倍x了 a和 B是整型變量一樣。上面的定義中,表示 pointer_1和 pointer_2只能指向整型變量。一個(gè)指針變量只能指向同一個(gè)類型的變量。如果指針是指向一個(gè)實(shí)型變量的,則增加的不是 2而是 4。 (2) 在定義指針變量時(shí)必須指定基類型。注意:指針變量名是 pointer_pointer_2,而不是 *pointer_ *pointer_2。見圖 。 將變量 i的地址存放到指針變量 pointer_1中,因此pointer_1就“指向”了變量 i。 pointer_2=amp。 (pointer4是指向字符型變量的指針變量 ) 那么,怎樣使一個(gè)指針變量指向另一個(gè)變量呢?下面用賦值語句使一個(gè)指針變量指向一個(gè)整型變量: pointer_1=amp。 定義指針變量的一般形式為基類型 *指針變量名下面都是合法的定義: float*pointer_3。 指針變量的基類型用來指定該指針變量可以指向的變量的類型。 第 1行定義了兩個(gè)整型變量 i和 j,第 2行定義了兩個(gè)指針變量: pointer_1和 pointer_2,它們是指向整型變量的指針變量。先看一個(gè)具體例子: int i, j。指針變量不同于整型變量和其他類型的變量,它是用來專門存放地址的。 第②個(gè)語句的含意是將 3賦給指針變量 ipointer所指向的變量。下面兩個(gè)語句作用相同: ① i=3。為了表示指針變量和它所指向的變量之間的聯(lián)系,在程序中用“ *”符號表示“指向”,例如, ipointer代表指針變量,而 *ipointer是 ipointer所指向的變量,見圖 。 變量的指針和指向變量的指針變量 如前所述,變量的指針就是變量的地址。請區(qū)分“指針”和“指針變量”這兩個(gè)概念。上述的 ipointer就是一個(gè)指針變量。例如,地址 2022是變量 i的指針。意思是通過它能找到以它為地址的內(nèi)存單元 (例如根據(jù)地址 2022就能找到變量 i的存儲單元,從而讀取其中的值 )。 由于通過地址能找到所需的變量單元,我們可以說,地址“指向”該變量單元 (如同說,房間號“指向“某一房間一樣 )。 ipointer中的值為 2022,它是變量 i的地址,這樣就在 ipointer和變量 i之間建立起一種聯(lián)系,即通過 ipointer能知道 i的地址,從而找到變量 i的內(nèi)存單元。見圖 。見圖 。圖 問的示意圖。另一種辦法是:為安全起見,將該 A鑰匙放到另一抽屜 B中鎖起來。要存取變量 i的值,也可以采用間接方式:先找到存放“ i的地址”的變量,從中取出 i的地址 (2022),然后到 202 2022字節(jié)取出 i的值(3)。i??梢酝ㄟ^下面語句將 i的刂 ?2022)存放到 ipointer中。按 C語言的規(guī)定,可以在程序中定義整型變量、實(shí)型變量、字符變量等,也可以定義這樣一種特殊的變量,它是存放地址的。這種按變量地址存取變量值的方式稱為“直接訪問”方式。i),在執(zhí)行時(shí),就把從鍵盤輸入的值送到地址為 2022開始的整型存儲單元中。例如, printf(“%D”, i)的執(zhí)行是這樣的:根據(jù)變量名與地址的對應(yīng)關(guān)系 (這個(gè)對應(yīng)關(guān)系是在編譯時(shí)確定的 ), 找到變量 i的地址2022,然后從由 2022開始的兩個(gè)字節(jié)中取出數(shù)據(jù)(即變量的值 3),把它輸出。 在程序中一般是通過變量名來對內(nèi)存單元進(jìn)行存取操作的。請務(wù)必弄清楚一個(gè)內(nèi)存單元的地址與內(nèi)存單元的內(nèi)容這兩個(gè)概念的區(qū)別,如圖 。內(nèi)存區(qū)的每一個(gè)字節(jié)有一個(gè)編號,這就是“地址”,它相當(dāng)于旅館中的房間號。系統(tǒng)根據(jù)程序中定義的變量類型,分配一定長度的空間。 地址和指針的概念 為了說清楚什么是指針,必須弄清楚數(shù)據(jù)在內(nèi)存中是如何存儲的,又是如何讀取的。 指針的概念比較復(fù)雜,使用也比較靈活,因此初學(xué)時(shí)常會出錯(cuò),務(wù)請?jiān)趯W(xué)習(xí)本章內(nèi)容時(shí)十分小心,多思考、多比較、多上機(jī),在實(shí)踐中掌握它。每一個(gè)學(xué)習(xí)和使用 C語言的人,都應(yīng)當(dāng)深入地學(xué)習(xí)和掌握指針。能直接處理內(nèi)存地址等,這對設(shè)計(jì)系統(tǒng)軟件是很必要的。有效而方便地使用數(shù)組 。能動態(tài)分配內(nèi)存 。 第 10章 指 針 地址和指針的概念 變量的指針和指向變量的指針變量 數(shù)組的指針和指向數(shù)組的指針變量 字符串的指針和指向字符串的指針變量 函數(shù)的指針和指向函數(shù)的指針變量 返回指針值的函數(shù) 指針數(shù)組和指向指針的指針 有關(guān)指針的數(shù)據(jù)類型和指針運(yùn)算的小結(jié) 習(xí)題 指針是 C語言中的一個(gè)重要的概念,也是 C語言的一個(gè)重要特色。正確而靈活地運(yùn)用它,可以有效地表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu) 。能方便地使用字符串 。在調(diào)用函數(shù)時(shí)能得到多于 1個(gè)的值 。掌握指針的應(yīng)用,可以使程序簡潔、緊湊、高效??梢哉f,不掌握指針就是沒有掌握 C的精華。我們在敘述時(shí)也力圖用通俗易懂的方法使讀者易于理解。 如果在程序中定義了一個(gè)變量,在編譯時(shí)就給這個(gè)變量分配內(nèi)存單元。例如,一般微機(jī)使用的 C系統(tǒng)為整 圖 型變量分配 2個(gè)字節(jié),對實(shí)型變量分配 4個(gè)字節(jié),對字符型變量分配 1個(gè)字節(jié)。在地址所標(biāo)志的內(nèi)存單元中存放數(shù)據(jù),這相當(dāng)于旅館中各個(gè)房間中居住旅客一樣。假設(shè)程序已定義了 3個(gè)整型變量 i、 j、 k,編譯時(shí)系統(tǒng)分配 2022和 2022兩個(gè)字節(jié)給變量 i, 2022, 2022字節(jié)給 j,2022, 2022給 k。其實(shí)程序經(jīng)過編譯以后己經(jīng)將變量名轉(zhuǎn)換為變量的地址,對變量值的存取 都是通過地址進(jìn)行的。輸入時(shí)如果用scanf(%D, amp。如果有語句“ k=i+j”,則從 202 2022字節(jié)取出 i的值 (3),再從 202 2022字節(jié)取出 j的值 (6),將它們相加后再將其和 (9)送到 k所占用的 202 2022字節(jié)單元中。 還可以采用另一種稱之為“間接訪問”的方式,將變量 i的地址存放在另一個(gè)變量中。假設(shè)我們定義了一個(gè)變量 ipointer,用來存放整型變量的地址,它被分配為 303011字節(jié)。 ipointer=amp。 這時(shí), ipointer的值就是 2022,即變量 i所占用單元的起始地址。 打個(gè)比方,為了開一個(gè) A抽屜,有兩種辦法,一種是將 A鑰匙帶在身上,需要時(shí)直接找出該鑰匙打開抽屜,取出所需的東西。如果需要打開 A抽屜,就需要先找出 B鑰匙,打開 B抽屜,取出 A鑰匙,再打開 A抽屜,取出 A抽屜中之物,這就是“間接訪問”。 圖 為了表示將數(shù)值 3送到變量中,可以有兩種表達(dá)方法: (1) 將 3送到變量 i所標(biāo)志的單元中。 (2) 將 3送到變量 ipointer所“指向”的單元 (即 i所標(biāo)志的單元 )中。 所謂“指向”就是通過地址來體現(xiàn)的。圖 頭表示這種“指向”關(guān)系。因此在 C語言中,將地址形象化地稱為 “指針”。一個(gè)變量的地址稱為該變量的“指針”。如果有一個(gè)變量專門用來存放另一變量的地址 (即指針 ),則它稱為“指針變量”。指針變量的值 (即指針變量中存放的值 )是指針 (地址 )。例如,可以說變量 i的指針是 2022,而不能說 i的指針變量是 2022。存放變量地址的變量是指針變量,用來指向另一個(gè)變量。 圖 可以看到, *ipointer也代表一個(gè)變量,它和變量 i是同一回事。 ② *ipointer=3。 定義一個(gè)指針變量 C語言規(guī)定所有變量在使用前必須定義,指定其類型,并按此分配內(nèi)存單元。必須將它定義為“指針類型”。 int *pointer_1, *pointer_2。左端的 int是在定義指針變量時(shí)必須指定的“基類型”。例如,上面定義的指針變量 pointer_1和 pointer_2可以用來指向整型變量 i和 j,但不能指向?qū)嵭妥兞?a和 B。(pointer3是指向?qū)嵭妥兞康闹羔樧兞?) char*pointer_4。i。j。 圖 同樣,將變量 j的地址存放到指針變量 pointer_2中,因此 pointer_2就“指向”了變量 j。 在定義指針變量時(shí)要注意兩點(diǎn): (1) 指針變量前面的“ *”,表示該變量的類型為指針型變量。這是與以前所介紹的定義變量的形式不同的。有的讀者認(rèn)為既然指針變量是存放地址的,那么只需要指定其為“指針型變量”即可,為什么還要指定基類型呢?我們知道整型數(shù)據(jù)和實(shí)型數(shù)據(jù)在內(nèi)存中所占的字節(jié)數(shù)是不相同的 (前者為 2字節(jié),后者為 4字 節(jié) ),在本章的稍后將要介紹指針的移動和指針的運(yùn)算 (加、減 ),例如“使指針移動 1個(gè)位置” 或“使指針值加 1” ,這個(gè)“ 1” 代表什么呢?如果指針是指向一個(gè)整型變量的,那么“使指針移動 1個(gè)位置” 意味著移動 2個(gè)字節(jié),“使指針加 1” 意味著使地址值加 2個(gè)字節(jié)。因此必須規(guī)定指針變量所指向的變量的類型,即基類型。不能忽而指向一個(gè)整型變量,忽而指向一個(gè)實(shí)型變量。 對上述指針變量的定義也可以這樣理解:*pointer_1和 *pointer_2是整型變量,如同:“ int a, B。而*pointer_1和 *pointer_2是 pointer_1和 pointer_2所指向的變量, pointer_1和 pointer_2是指針變量。 指針變量的引用 請牢記,指針變量中只能存放地址 (指針 ),不要將一個(gè)整型量 (或任何其他非地址類型的數(shù)據(jù) )賦給一個(gè)指針變量。 (pointer1為指針變量, 100為整數(shù) ) 有兩個(gè)有關(guān)的運(yùn)算符: (1) amp。 (2) *: 指針運(yùn)算符 (或稱“間接訪問”運(yùn)算符 )。a為變量 a的地址, *p為指針變量 p所指向的存儲單元。 main() { int a, B。 a=100。 pointer1=amp。/*把變量 a的地址賦給 pointer1*/ pointer2=amp。 /*把變量 B的地址賦給 pointer2*/ printf(%D, %D\n, a, B)。 } 運(yùn)行結(jié)果為: 100, 10 100, 10 對程序的說明: (1) 在開頭處雖然定義了兩個(gè)指針變量 pointer1和pointer2,但它們并未指向任何一個(gè)整型變量。至于指向哪一個(gè)整型變量,要在程序語句中指定。此時(shí) pointer1的值為 amp。B。最后兩個(gè) printf函數(shù)作用是相同的。程序第 3行的 *pointer1和*pointer2表示定義兩個(gè)指針變量 pointerpointer2。程序最后一行 printf函數(shù)中的 *pointer1和 *pointer2則代表變量,即 pointer1和 pointer2所指向的變量。a。B。注意不應(yīng)寫成:“ *pointer1=amp?!焙汀?*pointer2=amp?!薄U垖φ請D 析?!焙汀?*”運(yùn)算符再做些說明: (1) 如果已執(zhí)行了“ pointer1=amp。”語句,若有 amp。”和“ *”兩個(gè)運(yùn)算符的優(yōu)先級別相同,但按自右而左方向結(jié)合,因此先進(jìn)行*pointer1的運(yùn)算,它就是變量 a,再執(zhí)行 amp。因此, amp。a相同,即變量 a的地址。*pointer1。a(a的地址 )賦給 pointer2,如果pointer2原來指向 B,經(jīng)過重新賦值后它已不再指向 B了,而也指向了 a。圖 (a)是原來的情況,圖 (B)是執(zhí)行上述賦值語句后的情況。a的含義是什么?先進(jìn)行 amp。即 amp。a和*pointer1的作用是一樣的 (假設(shè)已執(zhí)行了“ pointer1=amp。即 *amp。 圖 (3) (*pointer1)++相當(dāng)于 a++。由于 ++在 pointer1的右側(cè),是“后加”,因此先對 pointer1的原值進(jìn)行 *運(yùn)算,得到 a的值,然后使 pointer1的值改變,這樣pointer1不再指向 a了。 例 a和 B兩個(gè)整數(shù),按先大后小的順序輸出 a和 B。 scanf(%D, %D, a
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1