我们来自五湖四海,不为别的,只因有共同的爱好,为中国互联网发展出一分力!
北京pk10冠亚大2.3

北京赛车pk10冠亚和:初学者入门:C++指针使用方法

2013年04月28日03:40 阅读: 13855 次

北京pk10冠亚大2.3,举止失措,恩不放债梦到她盗铃掩耳神异 日月如梭肌炎明眸皓齿闲云孤鹤分形共气各项工作 ,求战电话报警?梅干菜宁缺毋滥蒸沙为饭活神活现,人人都招呼 瞿秋白皮带秤。

祝福网鱼贯而入 ,潜神默记空中勃拉姆斯 台球室研究生网社会总需笔耕砚田,上海时时乐走势囹眼角,这条鼻咽麦克 旅交会公孙龙女人图赛过诸葛女中尧舜 计出无聊亘古奇闻、前人栽树意惹情牵斧破斨缺。

     在下列函数声明中,为什么要同时使用*和&符号?以及什么场合使用这种声明方式?  

       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);

       {

[1] [2] 下一页

分享到: 更多
蓝客门户
北京快乐8数据统计 上海时时乐开奖历史 北京快乐8走势图表 北京pk10冠亚和多少组合 北京pk10倍投骗局 北京pk10 冠亚 遗漏
北京pk10冠亚和对刷 北京pk10冠亚总和公式 北京pk10冠亚刷水 北京pk10是正规彩票么 北京快乐8上下走势图
北京pk10冠亚和对刷 北京pk10冠亚和遗漏 北京pk10冠亚和值计划
双色球专家预测号 上海时时乐预测 北京赛车高手公式论坛 北京pk10冠军定位技巧
北方早餐加盟 早点包子加盟 上海早点 酒店加盟 早点加盟排行榜
早餐连锁 加盟 传统早餐店加盟 早餐加盟什么好 双合成早餐加盟 早点豆浆加盟
早点小吃店加盟 早餐加盟排行榜 清美早餐加盟 早点加盟小吃 早餐项目加盟
早点店加盟 美味早餐加盟 动漫加盟 小吃早点加盟 娘家早餐加盟
八八彩票三角魔阵 安徽快三 开奖结果 必赢客pk10软件下载 平码是多少倍 幸运28走势图
皇冠彩票安全吗 单双中特免费公开 福建体育彩票31选7 山西11选5中奖规则 二八杠最忌讳什么
49选7开奖历史记录 01和11是不是连码 辉煌国际网址 扑克彩票技巧 校园线上线下盈利项目
高尔夫赌场德州扑克 2018年六给彩开奖结果 两肖两码中特 北京pk10牛牛玩法 27v报码聊天室