亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 教學--第19章 指針一 基本概念.htm

?? C++的入門書籍。文字簡單有趣,通俗易懂。
?? HTM
?? 第 1 頁 / 共 4 頁
字號:
      <P> 
      <P>第二步、基于前一題,再加上一個指針變量,叫<SPAN lang=en-us> p2</SPAN>。
      <P> 
      <P><SPAN lang=en-us>1) int k = 100;</SPAN>
      <P><SPAN lang=en-us>2) int* p1 = &amp;k;</SPAN>
      <P><SPAN lang=en-us>3) int* p2 = p;</SPAN>
      <P> 
      <P><SPAN lang=en-us>4) cout &lt;&lt; *p1 &lt;&lt; endl;</SPAN>
      <P><SPAN lang=en-us>5) cout &lt;&lt; *p2 &lt;&lt; endl;</SPAN>
      <P> 
      <P>編譯并運行,觀察結果應發現,<SPAN lang=en-us>*p </SPAN>和<SPAN lang=en-us> *p2 
      </SPAN>值相等,為什么?因為二者指向同一變量:k。
      <P> 
      <P>第三步、請像第一步一樣,觀察,k 的地址,及p1, p2 的值。看三者是否相等。
      <P> 
      <P>最后<SPAN lang=en-us>,</SPAN>將后面的兩行輸出刪除,改為以下兩行代碼。第一行輸出 k 的地址、p1、p2的值。
      <P>第二行 輸出k的值、*p1、*p2 值。
      <P> 
      <P>//cout &lt;&lt; *p1 &lt;&lt; endl;
      <P>//cout &lt;&lt; *p2 &lt;&lt; endl;
      <P> 
      <P>cout &lt;&lt; "&amp;k = " &lt;&lt; &amp;k &lt;&lt; ", p1 = " &lt;&lt; 
      p1 &lt;&lt; ", p2 = " &lt;&lt; p2 &lt;&lt;endl; 
      <P>cout &lt;&lt; "k = " &lt;&lt; k &lt;&lt; ", *p1 = " &lt;&lt; *p1 
      &lt;&lt; ", *p2 = " &lt;&lt; *p2 &lt;&lt;endl; <BR> 
      <P> 
      <P>運行后結果如下:
      <P align=center><IMG height=73 src="教學--第19章 指針一 基本概念.files/ls19.h5.jpg" 
      width=332 border=0>
      <P align=center><SPAN lang=en-us>(1245064 </SPAN>是十進制的,它等于十六進制的<SPAN 
      lang=en-us> 0x0012FF88)</SPAN>
      <P> 
      <H3><B><SPAN lang=en-us><A name=19.7>19.7</A> 
      </SPAN>上機實驗二:改變指針所指變量的值,改變指針的指向</B></H3>
      <P> 
      <P>盡管在上面的例子中修修改改也能改成本例,不過枝節太多的代碼不會混淆了我們的目的。這次我們重點在于“改變”。
      <P> 
      <P>第一步、 通過指針,改變其所指向的變量的值。(好繞啊!代碼卻很簡單)
      <P> 
      <P><SPAN lang=en-us>int k = 100;</SPAN>
      <P> 
      <P><SPAN lang=en-us>int* p = &amp;k;</SPAN>
      <P> 
      <P><SPAN lang=en-us>//</SPAN>先輸出一開始的k和*p的值<SPAN 
      lang=en-us>(</SPAN>用逗號分開<SPAN lang=en-us>)</SPAN>:
      <P><SPAN lang=en-us>cout &lt;&lt; k &lt;&lt; "," &lt;&lt; *p &lt;&lt; 
      endl;&nbsp; </SPAN>
      <P> 
      <P><SPAN lang=en-us>//</SPAN>現在直接改變k值:
      <P><SPAN lang=en-us>k = 200;</SPAN>
      <P> 
      <P><SPAN lang=en-us>//</SPAN>輸出此時的二者的值:
      <P><SPAN lang=en-us>cout &lt;&lt; k &lt;&lt; "," &lt;&lt; *p &lt;&lt; 
      endl;&nbsp; </SPAN>
      <P> 
      <P><SPAN lang=en-us>//</SPAN>然后通過指針來改變k值:
      <P><SPAN lang=en-us>*p = 300;</SPAN>
      <P> 
      <P><SPAN lang=en-us>//</SPAN>輸出此時的二者的值:
      <P><SPAN lang=en-us>cout &lt;&lt; k &lt;&lt; "," &lt;&lt; *p &lt;&lt; 
      endl;&nbsp; </SPAN>
      <P> 
      <P><SPAN lang=en-us>system("PAUSE");</SPAN>
      <P> 
      <P>輸出將是:
      <P> 
      <P align=center><IMG height=83 src="教學--第19章 指針一 基本概念.files/ls19.h6.gif" 
      width=159 border=0>
      <P> 
      <P>可見,當p指向k以后,修改 *p 的值完全等同于直接修改 k值。
      <P> 
      <P>第二步、改變指針的指向
      <P> 
      <P>所謂的“改變指向”,其實就是“改變指針變量中存儲的值(另一個變量的地址)”。我們一開始說的,兩種不同的說法而已。
      <P>在前面的代碼最后,我們加上以下代碼:
      <P> 
      <P><SPAN lang=en-us>...</SPAN>
      <P><SPAN lang=en-us>int m = 1000;</SPAN>
      <P> 
      <P><SPAN lang=en-us>//</SPAN>現在p改為指向變量<SPAN lang=en-us> </SPAN>m<SPAN 
      lang=en-us> :</SPAN>
      <P><SPAN lang=en-us>p = &amp;m;</SPAN>
      <P> 
      <P><SPAN lang=en-us>&nbsp;k = 400;</SPAN>
      <P><SPAN lang=en-us>cout &lt;&lt; k &lt;&lt; "," &lt;&lt; m &lt;&lt; "," 
      &lt;&lt; *p &lt;&lt; endl;<BR> </SPAN>
      <P><SPAN lang=en-us>*p = 2000;</SPAN>
      <P><SPAN lang=en-us>cout &lt;&lt; k &lt;&lt; "," &lt;&lt; m &lt;&lt; "," 
      &lt;&lt; *p &lt;&lt; endl;</SPAN>
      <P> 
      <P><SPAN lang=en-us>system("PAUSE");</SPAN>
      <P> 
      <P>屏幕輸出是:
      <P align=center><IMG height=56 src="教學--第19章 指針一 基本概念.files/ls19.h7.gif" 
      width=158 border=0>
      <P> 
      <P>當p改為指向m以后,之前指向的k便再也和它沒有什么關系了。改變k值不會再影響p;而改變p值,則影響到m值而非k值。
      <P> 
      <H3><B><SPAN lang=en-us><A name=19.8>19.8</A> </SPAN>指針的加減操作</B></H3>
      <P>整型變量可以加減,求和,求差:
      <P><SPAN lang=en-us>int a = 100;</SPAN>
      <P><SPAN lang=en-us>int b = 99;</SPAN>
      <P><SPAN lang=en-us>int c = a - b;</SPAN>
      <P> 
      <P>而指針,由于它存的是一個內存地址,那么我們可以想到,對兩個指針進行求和,求差,是沒有意義的。想想,把你家的門牌號(206)和對面的的門牌號(207)相加(413),得到的數有什么意義嗎?
      <P> 
      <P>那么,指針的加減指什么呢?主要是指移動(而不是聯通:()。比如,你家是206,那么,你的下一家,應該是206 + 1 = 
      207,而上一家則是206 - 1 = 
      205。你會說,我們這里的門牌號不是這樣編的。但不管如何,大致應當是一個等差關系,或其它規律。都可以通過不斷加上一個數,來得到下一家。
      <P> 
      <H4><B><SPAN lang=en-us><A name=19.8.1>19.8.1</A> </SPAN>指向數組的指針</B></H4>
      <P> 
      <P>現在,來說說指針指向一個數組的情況。
      <P> 
      <P><SPAN lang=en-us>int arr[] = {1,2,3,4,5}; //</SPAN>一個數組
      <P> 
      <P><SPAN lang=en-us>int* parr; //</SPAN>一個指針。
      <P> 
      <P><SPAN lang=en-us>parr = arr; //</SPAN>沒有<SPAN lang=en-us> </SPAN>‘<SPAN 
      lang=en-us>&amp;</SPAN>’<SPAN lang=en-us> </SPAN>?對啊,對數組就是不用取址符。 
      <P> 
      <P><SPAN lang=en-us>cout &lt;&lt; *parr &lt;&lt; endl;&nbsp; 
      //</SPAN>輸出<SPAN lang=en-us> *parr </SPAN>
      <P> 
      <P>先猜想一下,輸出結果是什么?
      <P> 
      <P>最“直覺”的想法是:<SPAN lang=en-us>parr 
      </SPAN>指向一個數組,那么輸出時,自然是輸出數組中的所有元素了。所以答案應該是:“12345”了?
      <P>不過,我想,學過前面的數組,我們就能知道這種想法錯誤。
      <P> 
      <P>正確答案是輸出數組中的第一個元素: 1 。
      <P> 
      <P>接下來,如果是這樣輸出呢?
      <P> 
      <P><SPAN lang=en-us>parr = arr;</SPAN>
      <P><SPAN lang=en-us>cout &lt;&lt; parr &lt;&lt; endl;</SPAN>
      <P> 
      <P>答案是輸出了<SPAN lang=en-us>arr</SPAN>的地址。就等同于輸出<SPAN lang=en-us> arr</SPAN> 
      <P><SPAN lang=en-us>cout &lt;&lt; arr &lt;&lt; endl;</SPAN> 的作用
      <P> 
      <P>在這里,難點是要記住,數組變量本身就是地址。所以有:
      <P> 
      <P>1、想讓指針變量存儲一個數組的地址(想讓指針變量指向一個數組)時,不用取址符。
      <P>2、解析一個指向數組的指針,得到的是數組的第一個元素。
      <P> 
      <P>我們來看示意圖:
      <P> 
      <P align=center><IMG height=277 src="教學--第19章 指針一 基本概念.files/ls19.h9.gif" 
      width=452 border=0>
      <P align=center>(指向數組的指針)
      <P align=center> 
      <P>盡管數組中的每一個元素都有自已的地址,然而一個指向數組的指針,它仍然只是存儲數組中第一個元素的地址。復習數組的章節,我們知道,數組中第一個元素的地址,就是數組的地址。即上圖中的<SPAN 
      lang=en-us> 10000010</SPAN>。
      <P> 
      <P>事實上,如果我們想故意讓代碼很難理解,則對于這一句:
      <P> 
      <P><SPAN lang=en-us>parr = arr;</SPAN>
      <P>可以改為:
      <P><SPAN lang=en-us>parr = &amp;arr[0];</SPAN>
      <P> 
      <P>本來嘛, arr 和<SPAN lang=en-us> &amp;arr[0] 
      </SPAN>的值就相等,我們在數組的章節已經學過。你若不信,可以輸出一個:
      <P><SPAN lang=en-us>cout &lt;&lt; arr &lt;&lt; "," &lt;&lt; &amp;arr[0] 
      &lt;&lt; endl;</SPAN>
      <P> 
      <H4><B><SPAN lang=en-us><A name=19.8.2>19.8.2</A> 
      </SPAN>上機實驗三:指向數組的指針</B></H4>
      <P> 
      <P>int arr[2] = {1,2};
      <P>int* p = &amp;arr[0];
      <P> 
      <P>//輸出:指向數組的指針,數組的地址,數組中第一個元素的地址。
      <P>cout &lt;&lt; p &lt;&lt; "," &lt;&lt; arr &lt;&lt; "," &lt;&lt; 
      &amp;arr[0] &lt;&lt; endl; 
      <P> 
      <P>system("PAUSE");
      <P> 
      <P>結果是: 
      <P align=center><IMG height=34 src="教學--第19章 指針一 基本概念.files/ls19.h10.gif" 
      width=191 border=0>
      <P align=center><SPAN lang=en-us>(</SPAN>指向數組的指針,數組的地址,數組中第一個元素的地址。<SPAN 
      lang=en-us>)</SPAN>
      <P> 
      <H4><B><SPAN lang=en-us><A name=19.8.3>19.8.3</A> </SPAN>偏移指針</B></H4>
      <P> 
      <P>請看前圖的這一部分:
      <P align=center><IMG height=66 src="教學--第19章 指針一 基本概念.files/ls19.h11.gif" 
      width=322 border=0>
      <P align=center> 
      <P><SPAN lang=en-us>parr </SPAN>中存的值為 “10000010”。
      <P> 
      <P>指針可以進行加減操作。假設我現在再定義一個指針:
      <P> 
      <P><SPAN lang=en-us>int* parr2;</SPAN>
      <P> 
      <P><SPAN lang=en-us>parr2 = parr + 1;</SPAN>
      <P> 
      <P>現在問,<SPAN lang=en-us>parr2 </SPAN>的值是多少?有兩種答案。一種說,<SPAN lang=en-us> 
      parr </SPAN>存的值是<SPAN lang=en-us> 10000010 </SPAN>,加1后,自然應為<SPAN 
      lang=en-us> 10000011</SPAN>了。這看似自然的答案又是錯誤了。
      <P> 
      <P>正確答案:<SPAN lang=en-us>10000014</SPAN>。繼續看前圖另一小部分:
      <P align=center><IMG height=111 src="教學--第19章 指針一 基本概念.files/ls19.h12.gif" 
      width=204 border=0>
      <P align=center>(加1后,指針指向了下一個元素)
      <P> 
      <P>加1后,指針指向了下一個元素。由于這是一個<SPAN lang=en-us> int 
      </SPAN>類型的數組,每個元素的大小是4個字節。所以第二個元素的地址是10000014。
      <P> 
      <P><B>重點 <SPAN lang=en-us>&amp; </SPAN>易錯點:對指針 
      進行加1操作,得到的是下一個元素的地址,而不是原有地址值直接加1。</B>
      <P> 
      <P>知到了如何“加”,也就知道了如何“減”。減以后,得到的是上一個元素的大小。
      <P> 
      <P>所以,一個類型為 T 的指針的移動,以 <SPAN lang=en-us>sizeof(T) </SPAN>為移動單位。
      <P> 
      <P>比如:<SPAN lang=en-us> </SPAN>
      <P><SPAN lang=en-us>int* pInt; </SPAN>移動單位為 <SPAN lang=en-us>sizeof(int) 
      </SPAN>。即:4。而<SPAN lang=en-us> char* pChar; </SPAN>移動單位為<SPAN lang=en-us> 
      sizeof(char)</SPAN>。即1。
      <P> 
      <P>試舉一例:
      <P> 
      <H4><B><SPAN lang=en-us><A name=19.8.4>19.8.4</A> 
      </SPAN>上機實驗四:指針的最小移動單位</B></H4>
      <P> 
      <P><SPAN lang=en-us>int arr[6] = {101,102,103,104,105,106};</SPAN>
      <P><SPAN lang=en-us>int* pI = arr;</SPAN>
      <P> 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区在线免费观看| 亚洲少妇屁股交4| 菠萝蜜视频在线观看一区| 青青草国产成人99久久| 午夜国产精品一区| 视频一区二区三区中文字幕| 亚洲日本成人在线观看| 亚洲视频免费观看| 亚洲人快播电影网| 亚洲综合久久av| 亚洲理论在线观看| 亚洲国产精品久久人人爱蜜臀| 亚洲欧美日韩国产另类专区 | 成人欧美一区二区三区1314| 国产婷婷色一区二区三区| 久久久精品国产免大香伊| 久久这里都是精品| 国产欧美精品一区aⅴ影院 | 久久精品夜夜夜夜久久| 337p粉嫩大胆色噜噜噜噜亚洲| 欧美一级日韩免费不卡| 日韩久久久精品| 久久久三级国产网站| 国产精品视频一二| 亚洲色图丝袜美腿| 视频在线观看91| 狠狠网亚洲精品| 波多野洁衣一区| 欧美性淫爽ww久久久久无| 91精品国产福利在线观看| 精品国产乱码久久久久久夜甘婷婷 | 日韩不卡一二三区| 精品一区二区三区影院在线午夜| 国产麻豆一精品一av一免费| 国产成人在线观看免费网站| 91欧美一区二区| 91麻豆精品91久久久久同性| 久久九九全国免费| 一个色妞综合视频在线观看| 裸体一区二区三区| 99久久久免费精品国产一区二区| 欧美色偷偷大香| 久久综合国产精品| 亚洲一区二区三区中文字幕在线| 日韩精品欧美精品| 成人三级伦理片| 欧美精选一区二区| 国产精品久久久久久户外露出| 亚洲国产精品一区二区www在线| 久久99精品久久久久久动态图| 成人午夜在线视频| 日韩午夜电影av| 亚洲黄色在线视频| 国产一区中文字幕| 欧美电影一区二区| 最新不卡av在线| 国产精品综合一区二区三区| 欧美日韩在线亚洲一区蜜芽| 欧美国产乱子伦| 免费的成人av| 色综合久久综合网97色综合| 国产亚洲一区字幕| 美洲天堂一区二卡三卡四卡视频| av在线不卡电影| 国产色爱av资源综合区| 日韩精彩视频在线观看| 色综合天天综合网天天狠天天| 久久久久久免费网| 免费成人深夜小野草| 欧美亚洲动漫另类| 国产精品看片你懂得| 青娱乐精品视频在线| 色综合一个色综合亚洲| 国产欧美1区2区3区| 欧美aaaaa成人免费观看视频| 欧美中文字幕一区| 日韩一区欧美小说| 97se亚洲国产综合自在线不卡| 欧美国产精品一区二区| 国产一区二区三区在线看麻豆| 日韩视频不卡中文| 日韩成人午夜电影| 日韩一二三四区| 秋霞av亚洲一区二区三| 日韩一区国产二区欧美三区| 日韩精品欧美成人高清一区二区| 欧美在线视频全部完| 亚洲男人天堂av| 91视频国产资源| 国产精品乱人伦| 97超碰欧美中文字幕| 亚洲三级在线免费| 在线一区二区观看| 亚洲成人动漫精品| 欧美一区永久视频免费观看| 麻豆久久久久久| 久久精品一区蜜桃臀影院| 成人小视频免费在线观看| 国产精品久久久久久久午夜片 | www国产精品av| 韩国成人在线视频| 国产精品久久久一本精品| av电影在线观看一区| 夜夜嗨av一区二区三区中文字幕| 欧美喷水一区二区| 狠狠色丁香婷婷综合| 国产精品久久久久久久久久久免费看 | 亚洲国产视频一区| 日韩西西人体444www| 国产成人亚洲综合色影视| 国产精品美女久久久久久久久久久 | 欧美男同性恋视频网站| 久久国产成人午夜av影院| 久久综合九色综合97婷婷女人| caoporn国产精品| 日韩精品91亚洲二区在线观看| 久久天天做天天爱综合色| 色一情一乱一乱一91av| 日本在线不卡一区| 国产精品久久久久久久蜜臀| 欧美日韩国产一级片| 国产一区二区按摩在线观看| 亚洲欧美日韩系列| 久久久美女毛片 | 一区二区在线观看av| 日韩精品一区二区三区中文精品| 波多野结衣的一区二区三区| 视频一区欧美精品| 自拍偷拍欧美激情| 精品电影一区二区三区| 欧美午夜精品一区二区三区| 国产福利一区二区三区在线视频| 亚洲一区二区三区四区在线| 国产喂奶挤奶一区二区三区| 制服丝袜国产精品| 91国产丝袜在线播放| 国产v综合v亚洲欧| 麻豆国产精品视频| 亚洲国产精品一区二区久久| 中文字幕在线免费不卡| 久久久亚洲综合| 日韩免费电影网站| 欧美久久一二区| 欧美偷拍一区二区| 99精品视频在线免费观看| 国产在线精品一区二区| 免费看欧美女人艹b| 亚洲6080在线| 亚洲综合一区二区精品导航| 国产精品美女久久久久久久久久久| 精品乱人伦一区二区三区| 欧美嫩在线观看| 欧美日韩日日摸| 欧美性猛交xxxx黑人交| 91老师国产黑色丝袜在线| 91麻豆福利精品推荐| 国产91富婆露脸刺激对白| 国产精品一区二区三区乱码| 久久国产综合精品| 毛片不卡一区二区| 奇米色一区二区三区四区| 亚洲图片欧美视频| 日韩在线a电影| 麻豆精品在线播放| 经典一区二区三区| 国产麻豆精品95视频| 国产91高潮流白浆在线麻豆| 国产伦精品一区二区三区在线观看| 国内精品免费**视频| 国产在线精品不卡| youjizz国产精品| 91视频在线观看| 欧美丝袜丝交足nylons图片| 欧美日韩一区小说| 日韩精品一区二区三区在线观看 | 精品少妇一区二区三区视频免付费 | 国产精品久久久久影院| 中文字幕色av一区二区三区| 亚洲精品国产成人久久av盗摄 | 丝袜美腿亚洲色图| 男人操女人的视频在线观看欧美| 美女免费视频一区二区| 国产精品一区二区x88av| 不卡的av电影| 欧美性做爰猛烈叫床潮| 欧美mv日韩mv国产网站app| 欧美极品少妇xxxxⅹ高跟鞋 | 色综合久久久久综合体桃花网| 色综合天天综合网天天看片| 欧美久久免费观看| 国产亚洲欧美日韩日本| 亚洲三级久久久| 免费在线观看日韩欧美| 成人听书哪个软件好| 337p亚洲精品色噜噜| 欧美韩国一区二区| 亚洲国产cao| 成人免费观看男女羞羞视频| 欧美丝袜自拍制服另类| 国产亚洲自拍一区|