狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频

當前位置:系統之家 > 技術開發教程 > 詳細頁面

C++指針運用辦法解惑

C++指針運用辦法解惑

更新時間:2019-05-20 文章作者:未知 信息來源:網絡 閱讀次數:

    在下列函數聲明中,為什么要同時使用*和&符號?以及什么場合使用這種聲明方式?
  void func1( MYCLASS *&pBuildingElement );

  論壇中經常有人問到這樣的問題。本文試圖通過一些實際的指針使用經驗來解釋這個問題。
仔細看一下這種聲明方式,確實有點讓人迷惑。在某種意義上,"*"和"&"是意思相對的兩個東西,把它們放在一起有什么意義呢?。為了理解指針的這種做法,我們先復習一下C/C++編程中無所不在的指針概念。我們都知道MYCLASS*的意思:指向某個對象的指針,此對象的類型為MYCLASS。 Void func1(MYCLASS *pMyClass);

// 例如: MYCLASS* p = new MYCLASS;
func1(p);
上面這段代碼的這種處理方法想必誰都用過,創建一個MYCLASS對象,然后將它傳入func1函數。現在假設此函數要修改pMyClass: void func1(MYCLASS *pMyClass)
{
DoSomething(pMyClass);
pMyClass = // 其它對象的指針
}

  第二條語句在函數過程中只修改了pMyClass的值。并沒有修改調用者的變量p的值。如果p指向某個位于地址0x008a00的對象,當func1返回時,它仍然指向這個特定的對象。(除非func1有bug將堆弄亂了,完全有這種可能。)

  現在假設你想要在func1中修改p的值。這是你的權利。調用者傳入一個指針,然后函數給這個指針賦值。以往一般都是傳雙指針,即指針的指針,例如,CMyClass**。


MYCLASS* p = NULL;
func1(&p);

void func1(MYCLASS** pMyClass);
{
*pMyClass = new MYCLASS;
……
}


  調用func1之后,p指向新的對象。在COM編程中,你到處都會碰到這樣的用法--例如在查詢對象接口的QueryInterface函數中:


interface ISomeInterface {
HRESULT QueryInterface(IID &iid, void** ppvObj);
……
};
LPSOMEINTERFACE p=NULL;
pOb->QueryInterface(IID_SOMEINTERFACE, &p);  

  此處,p是SOMEINTERFACE類型的指針,所以&p便是指針的指針,在QueryInterface返回的時候,如果調用成功,則變量p包含一個指向新的接口的指針。

  如果你理解指針的指針,那么你肯定就理解指針引用,因為它們完全是一回事。如果你象下面這樣聲明函數:


void func1(MYCLASS *&pMyClass);
{
pMyClass = new MYCLASS;
……
}

  其實,它和前面所講得指針的指針例子是一碼事,只是語法有所不同。傳遞的時候不用傳p的地址&p,而是直接傳p本身:

  MYCLASS* p = NULL;
  func1(p);

  在調用之后,p指向一個新的對象。一般來講,引用的原理或多或少就象一個指針,從語法上看它就是一個普通變量。所以只要你碰到*&,就應該想到**。也就是說這個函數修改或可能修改調用者的指針,而調用者象普通變量一樣傳遞這個指針,不使用地址操作符&。

  至于說什么場合要使用這種方法,我會說,極少。MFC在其集合類中用到了它--例如,CObList,它是一個Cobjects指針列表。



Class CObList : public Cobject {
……

// 獲取/修改指定位置的元素
Cobject*& GetAt(POSITION position);
Cobject* GetAt(POSITION position) const;
};


  這里有兩個GetAt函數,功能都是獲取給定位置的元素。區別何在呢?

  區別在于一個讓你修改列表中的對象,另一個則不行。所以如果你寫成下面這樣: Cobject* pObj = mylist.GetAt(pos);

  則pObj是列表中某個對象的指針,如果接著改變pObj的值: pObj = pSomeOtherObj;

  這并改變不了在位置pos處的對象地址,而僅僅是改變了變量pObj。但是,如果你寫成下面這樣: Cobject*& rpObj = mylist.GetAt(pos);

  現在,rpObj是引用一個列表中的對象的指針,所以當改變rpObj時,也會改變列表中位置pos處的對象地址--換句話說,替代了這個對象。這就是為什么CObList會有兩個GetAt函數的緣故。一個可以修改指針的值,另一個則不能。注意我在此說的是指針,不是對象本身。這兩個函數都可以修改對象,但只有*&版本可以替代對象。

  在C/C++中引用是很重要的,同時也是高效的處理手段。所以要想成為C/C++高手,對引用的概念沒有透徹的理解和熟練的應用是不行的。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频
在线影视一区二区三区| 久久久国产精品一区二区三区| 国产一区二区三区在线观看精品| 一二三区精品视频| 亚洲美女淫视频| 亚洲综合色婷婷| 亚洲大片在线观看| 日韩高清不卡一区二区三区| 日本欧美肥老太交大片| 狠狠色狠狠色综合日日91app| 开心九九激情九九欧美日韩精美视频电影| 日韩精品一区第一页| 美女视频一区在线观看| 激情欧美日韩一区二区| 国产不卡在线一区| 欧美激情第10页| 亚洲国产专区校园欧美| 亚洲一区二区网站| 欧美欧美欧美欧美首页| 欧美精品一区二区三区在线| 国产日韩精品一区二区三区在线| 自拍偷拍亚洲欧美日韩| 视频一区二区三区中文字幕| 韩国成人在线视频| www.亚洲免费av| 亚洲午夜一区| 欧美综合色免费| 精品粉嫩超白一线天av| 成人欧美一区二区三区1314| 天天色图综合网| 国产麻豆9l精品三级站| 欧美另类专区| 色欲综合视频天天天| 日韩精品中文字幕在线一区| 中文字幕日本不卡| 久久精品国产一区二区三区免费看| 国产寡妇亲子伦一区二区| 欧美日韩少妇| 91久久精品一区二区三| 精品日韩av一区二区| 一区二区三区欧美在线观看| 韩国精品主播一区二区在线观看 | 亚洲一本大道在线| 国产成人精品免费网站| 亚洲激情黄色| 欧美一区二区三区免费在线看 | 日本91福利区| 欧美偷拍一区二区| 欧美老年两性高潮| 国产视频精品网| 亚洲欧美在线网| 蜜桃精品久久久久久久免费影院| 欧美精品v国产精品v日韩精品 | 欧美日韩亚洲综合一区| 国产精品久久久久久久浪潮网站| 免费成人在线播放| 亚洲高清在线| 7777精品伊人久久久大香线蕉超级流畅 | 亚洲国产综合在线| 三级亚洲高清视频| 欧美影院一区| 精品视频在线免费看| 综合婷婷亚洲小说| 成人国产精品免费网站| 久久久久久久久一区二区| 久久久久久久av麻豆果冻| 日韩和欧美的一区| 亚洲激情社区| 久久久影院官网| 久久se这里有精品| 午夜亚洲影视| 一区精品在线播放| av中文字幕在线不卡| 欧美综合色免费| 亚洲一区二区在线播放相泽| 欧美成人一区二区在线| 日韩免费看的电影| 极品少妇xxxx偷拍精品少妇| 国产一级一区二区| 亚洲丝袜美腿综合| 欧美 日韩 国产一区二区在线视频| 欧美日产在线观看| 日韩精品一二三四| 亚洲资源av| 一区二区在线观看免费视频播放 | 色诱视频网站一区| 亚洲一二三四区| 9国产精品视频| 国产精品成人免费在线| 99精品久久99久久久久| 欧美sm美女调教| 国产电影一区在线| 欧美精品久久久久久久多人混战| 视频精品一区二区| 一本色道综合亚洲| 免费高清视频精品| 欧美综合一区二区三区| 日本美女视频一区二区| 在线一区二区视频| 日本v片在线高清不卡在线观看| 蜜桃精品久久久久久久免费影院| 亚洲在线视频免费观看| 亚洲一区二区三区高清| 一区二区三区毛片| 亚洲欧美日韩一区在线观看| 亚洲成人免费在线| 欧美体内she精高潮| 久久精品国产秦先生| 欧美日韩国产在线播放网站| 国产成人一区在线| 精品久久久网站| 午夜精品视频| 18涩涩午夜精品.www| 国产美女一区| 久久精品国内一区二区三区| 在线不卡免费av| www.成人网.com| 国产精品欧美精品| 国产欧美亚洲一区| 全国精品久久少妇| 日韩视频一区二区三区在线播放| 成人av电影免费在线播放| 亚洲国产精品精华液2区45| 日韩视频在线播放| 奇米精品一区二区三区在线观看| 欧美片网站yy| 色综合中文字幕国产 | 成人性视频网站| 国产精品久久国产精麻豆99网站 | 夜夜亚洲天天久久| 欧美日韩久久久久久| 99久久久国产精品免费蜜臀| 日韩一区日韩二区| 色婷婷亚洲婷婷| 97se亚洲国产综合自在线不卡| 亚洲视频电影在线| 欧美性生活一区| 欧美日韩妖精视频| 日韩电影在线观看一区| 2022国产精品视频| 国产精品亚洲欧美| 国产91清纯白嫩初高中在线观看| 国产精品女主播av| 欧美日本在线播放| 亚洲欧洲日本国产| 精品一二三四在线| 国产精品嫩草影院com| 欧美网站一区二区| 狠狠色噜噜狠狠狠狠色吗综合| 日韩国产在线观看| 国产丝袜美腿一区二区三区| 日本韩国欧美三级| 国产一区亚洲| 国产呦精品一区二区三区网站| 亚洲人成人一区二区在线观看| 欧美三片在线视频观看| 亚洲丰满在线| 成人午夜精品一区二区三区| 亚洲一区二区三区四区在线观看 | 欧美fxxxxxx另类| 国产一区二三区好的| 怡红院av一区二区三区| 精品国产凹凸成av人网站| 日本高清不卡aⅴ免费网站| 国产精品多人| 国产91丝袜在线观看| 强制捆绑调教一区二区| 国产精品美女久久久久久2018 | 精品中文av资源站在线观看| 亚洲精选视频免费看| 久久久精品人体av艺术| 欧美另类videos死尸| 亚洲一卡久久| 亚洲午夜电影| 欧美不卡福利| 不卡av在线网| 国产一区二区三区在线观看免费 | av在线播放不卡| 国产毛片精品国产一区二区三区| 亚洲mv大片欧洲mv大片精品| 成人欧美一区二区三区黑人麻豆| 久久久亚洲精品石原莉奈| 欧美一级在线视频| 欧美日韩一区 二区 三区 久久精品| 亚洲人久久久| 在线观看成人av电影| 欧美激情综合色综合啪啪| 成人性生交大片免费| 国产一区999| 国产做a爰片久久毛片| 蜜桃av噜噜一区二区三区小说| 亚洲高清视频中文字幕| 亚洲综合激情网| 亚洲综合图片区| 一区二区三区蜜桃| 亚洲在线中文字幕| 亚洲第一精品在线| 性感美女极品91精品| 午夜欧美电影在线观看| 日韩福利视频导航|