青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Where there is a dream ,there is hope

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  64 Posts :: 0 Stories :: 8 Comments :: 0 Trackbacks

常用鏈接

留言簿(1)

我參與的團隊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

原文地址:http://www.cnblogs.com/ly4cn/archive/2005/11/28/286185.html

    指針,在C/C++語言中一直是很受寵的;幾乎找不到一個不使用指針的C/C++應用。用于存儲數據和程序的地址,這是指針的基本功能。用于指向整型數,用整數指針(int*);指向浮點數用浮點數指針(float*);指向結構,用對應的結構指針(struct xxx *);指向任意地址,用無類型指針(void*)。
    有時候,我們需要一些通用的指針。在C語言當中,(void*) 可以代表一切;但是在C++中,我們還有一些比較特殊的指針,無法用(void*)來表示。事實上,在C++中,想找到一個通用的指針,特別是通用的函數指針簡直是一個“不可能任務”。
   
    C++是一種靜態類型的語言,類型安全在C++中舉足輕重。在C語言中,你可以用void*來指向一切;但在C++中,void*并不能指向一切,就算能,也失去了類型安全的意義了。類型安全往往能幫我們找出程序中潛在的一些BUG。
   
    下面我們來探討一下,C++中如何存儲各種類型數據的指針。

   
    1.  數據指針
     數據指針分為兩種:常規數據指針和成員數據指針
     
    1.1 常規數據指針
     這個不用說明了,和C語言一樣,定義、賦值是很簡單明了的。常見的有:int*, double* 等等。
     如:
     int value = 123;
     
int * pn = &value;
   
     
    1.2 成員數據指針
     有如下的結構:
     struct MyStruct
     {
       
int key;
       
int value;
     };
   
     現在有一個結構對象:
     MyStruct me;
     MyStruct* pMe = &me;
   
     我們需要 value 成員的地址,我們可以:
     int * pValue = &me.value;
     //
     int * pValue = &pMe->value;
   
     當然了,這個指針仍然是屬于第一種范籌----常規數據指針。
     
     好了,我們現在需要一種指針,它指向MyStruct中的任一數據成員,那么它應該是這樣的子:
     int MyStruct::* pMV = &MyStruct::value;
     
//
     int MyStruct::* pMK = &MyStruct::key;
   
     這種指針的用途是用于取得結構成員在結構內的地址。我們可以通過該指針來訪問成員數據:
     int value = pMe->*pMV; // 取得pMe的value成員數據。
     int key = me.*pMK; // 取得me的key成員數據。
   
     那么,在什么場合下會使用到成員數據指針呢?
     確實,成員指針本來就不是一種很常用的指針。不過,在某些時候還是很有用處的。我們先來看看下面的一個函數:
  int sum(MyStruct* objs, int MyStruct::* pm, int count)
  {
      
int result = 0;
      
for(int i = 0; i < count; ++i)
          result 
+= objs[i].*pm;
      
return result;
  }
     
     這個函數的功能是什么,你能看明白嗎?它的功能就是,給定count個MyStruct結構的指針,計算出給定成員數據的總和。有點拗口對吧?看看下面的程序,你也許就明白了:
     
     MyStruct me[10=
     {
      {
1,2},{3,4},{5,6},{7,8},{9,10},{11,12},{13,14},{15,16},{17,18},{19,20}
     };
     
     
int sum_value = sum(me, &MyStruct::value, 10);
     
//計算10個MyStruct結構的value成員的總和: sum_value 值 為 110     (2+4+6+8++20)
     
     
int sum_key = sum(me, &MyStruct::key, 10);
     
//計算10個MyStruct結構的key成員的總和:   sum_key 值 為 100       (1+3+5+7++19)
   
     
     也許,你覺得用常規指針也可以做到,而且更易懂。Ok,沒問題:
     int sum(MyStruct* objs, int count)
     {
      
int result = 0;
      
for(int i = 0; i < count; ++i)
       result 
+= objs[i].value;
      
return result;
     }

     你是想這么做嗎?但這么做,你只能計算value,如果要算key的話,你要多寫一個函數。有多少個成員需要計算的話,你就要寫多少個函數,多麻煩啊。 
posted on 2011-02-15 11:19 IT菜鳥 閱讀(365) 評論(1)  編輯 收藏 引用

Feedback

# re: C++指針探討 (一)數據指針 2011-02-15 15:27 lwch
int sum(MyStruct* objs, int offset, int count)
{
    
int result = 0;
    
for(int i = 0; i < count; ++i)
        result 
+= *(objs[i] + offset);
    
return result;
}

int sum_value = sum(me,&MyStruct::value,10);

int sum_key = sum(me,&MyStruct::key,10);
  回復  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美精品三区| 亚洲图片在区色| 在线一区二区三区做爰视频网站 | 国产午夜亚洲精品羞羞网站 | 亚洲清纯自拍| 99国产精品国产精品久久| 亚洲精品综合| 午夜精品福利电影| 久久九九99视频| 亚洲第一精品电影| 91久久午夜| 亚洲一区视频在线观看视频| 欧美一区二区三区四区在线| 久久亚洲综合色| 欧美日韩视频不卡| 韩国成人精品a∨在线观看| 亚洲国产mv| 亚洲淫片在线视频| 久久亚洲捆绑美女| 亚洲免费成人av| 欧美尤物巨大精品爽| 欧美—级在线免费片| 国产欧美一区二区精品忘忧草| 韩国欧美一区| 亚洲一区综合| 欧美大片免费| 欧美一级专区免费大片| 欧美激情日韩| 激情综合色综合久久综合| 亚洲美女视频网| 久久永久免费| 亚洲天堂免费观看| 欧美精品激情在线| 国产亚洲精品久| 中文在线不卡| 亚洲第一区在线观看| 亚洲欧美成人精品| 欧美精品免费在线| 亚洲国产精品成人| 久久天天躁狠狠躁夜夜爽蜜月| 一区二区三区欧美成人| 欧美激情欧美激情在线五月| 在线观看日韩av| 久久精品av麻豆的观看方式 | 午夜精品久久| 亚洲激情在线视频| 浪潮色综合久久天堂| 欧美视频一区二| 亚洲国产成人精品视频| 久久国产88| 亚洲欧美网站| 国产精品久久久久aaaa樱花| 日韩一级精品视频在线观看| 亚洲成人在线视频播放 | 夜夜爽99久久国产综合精品女不卡| 欧美一区二区三区的| 亚洲精品一区在线观看| 欧美成人一区二区三区片免费 | 销魂美女一区二区三区视频在线| 亚洲成色精品| 美女免费视频一区| 亚洲人成免费| 最近看过的日韩成人| 久久久久久亚洲精品杨幂换脸| 国产精品久久久久久久久久妞妞| 亚洲欧美区自拍先锋| 亚洲图片欧美日产| 国产精品久久久一本精品| 午夜精品久久久| 欧美一区二区高清| 国产最新精品精品你懂的| 久久精品一级爱片| 久久激情视频久久| 亚洲激情精品| 一本大道久久a久久精二百| 国产精品极品美女粉嫩高清在线 | 国产精品久久久久av免费| 亚洲综合首页| 午夜精品国产更新| 在线国产精品播放| 亚洲国产一区二区视频| 欧美日韩中文字幕综合视频 | 久久亚洲精品视频| 猛男gaygay欧美视频| 在线中文字幕日韩| 午夜一区不卡| 日韩午夜在线| 午夜精品免费视频| 亚洲国产高清一区| 亚洲视频二区| 久久噜噜亚洲综合| 国语自产在线不卡| 久久在精品线影院精品国产| 欧美高清在线| 欧美午夜精品久久久久免费视| 亚洲欧美一区在线| 久久一区视频| 亚洲欧美激情在线视频| 久久久视频精品| 亚洲欧美国产精品va在线观看| 久久久久国内| 亚洲欧美日韩视频二区| 蜜臀av性久久久久蜜臀aⅴ| 亚洲无线视频| 欧美freesex交免费视频| 欧美亚洲在线视频| 欧美精品二区| 欧美激情亚洲自拍| 国产精品一区视频| 99视频在线精品国自产拍免费观看| 午夜一级久久| 欧美久久久久久蜜桃| 亚洲精品日韩综合观看成人91| 国产精品久久久久久久午夜| 亚洲免费精品| 在线一区二区三区做爰视频网站| 国产综合久久| 亚洲视频在线观看| 亚洲人成在线观看| 久久久久国产精品麻豆ai换脸| 亚洲一级在线| 欧美精品尤物在线| 亚洲第一福利在线观看| 国产精品卡一卡二卡三| 亚洲激情在线观看视频免费| 在线电影国产精品| 欧美专区在线观看一区| 性色av一区二区三区在线观看| 欧美精品v日韩精品v国产精品 | 国产精品久久久久永久免费观看| 亚洲国产99| 亚洲国产精品成人一区二区| 久久国产毛片| 久久精品视频网| 国产视频亚洲| 欧美在线免费观看亚洲| 羞羞色国产精品| 国产精品一区二区a| 99视频精品全国免费| 亚洲先锋成人| 国产日本欧美一区二区三区在线 | 国产麻豆91精品| 亚洲综合日韩中文字幕v在线| 亚洲欧美日本另类| 国产欧美精品| 久久福利视频导航| 欧美成人a视频| 91久久精品日日躁夜夜躁国产| 老巨人导航500精品| 亚洲黄一区二区三区| 99日韩精品| 国产九九精品| 久久久999精品视频| 欧美 日韩 国产 一区| 亚洲精品乱码久久久久久按摩观 | 久久久久综合| 韩日欧美一区二区| 女仆av观看一区| 日韩亚洲精品在线| 欧美中日韩免费视频| 在线精品在线| 欧美日韩在线精品一区二区三区| av不卡在线看| 久久久免费观看视频| 亚洲精品美女在线| 国产老女人精品毛片久久| 91久久久在线| 国产欧美亚洲一区| 麻豆久久久9性大片| 亚洲美女在线国产| 欧美综合激情网| 亚洲区中文字幕| 国产精品私房写真福利视频| 久久久精品一区二区三区| 亚洲国产精品久久久久婷婷老年| 亚洲一区免费在线观看| 国产日韩在线看片| 欧美精品免费播放| 久久久国产精彩视频美女艺术照福利| 亚洲激情欧美| 美女网站久久| 午夜精品视频在线观看| 亚洲国产高清高潮精品美女| 国产精品视频yy9099| 欧美精品午夜| 老司机一区二区| 久久电影一区| 午夜精品av| 亚洲一区二区日本| 亚洲九九精品| 亚洲国产经典视频| 老司机午夜精品| 欧美一区国产在线| 一区二区电影免费在线观看| 在线观看91精品国产麻豆| 国产精品免费视频观看| 欧美久久久久久蜜桃| 欧美二区在线| 猛干欧美女孩| 欧美69wwwcom|