c++ *和*&


在C語音中代表指針,&代表地址
在C++中
代表指針,而&代表引用,而*&代表指針引用
指針是一個變量(它的值是一個地址),而指針引用指的是這個變量的引用;
在C++中如果參數不是引用的話會調用參數對象的拷貝構造函數,所以如果有需求想改變指針所指的對象(換句話說,就是要改變指針里面存的地址),就要使用指針引用

#include<iostream>
using namespace std;
typedef  struct  queue
{
    int  data;
    queue  *next;
};

void search1 (queue  * &p1)
{
    p1=new queue;
    p1->data=2;
    cout<<"p1->data="<<p1->data<<" search1 p1儲存的地址"<<&p1<<endl;
}

void search2 (queue  *p2)
{
    p2=new queue;
    p2->data=2;
    cout<<"p2->data="<<p2->data<<" search2 p2儲存的地址"<<&p2<<endl<<endl;;
}

int main()
{
    queue *p1,*p2;
    p1=new queue;
    p1->data=1;
    p2=new queue;
    p2->data=1;

    cout<<"p1->data="<<p1->data<<" p1儲存的地址"<<&p1<<endl;
    cout<<"p2->data="<<p2->data<<" p2儲存的地址"<<&p2<<endl<<endl;

    search1(p1);
    search2(p2);

    cout<<"p1->data="<<p1->data<<" p1儲存的地址"<<&p1<<endl;
    cout<<"p2->data="<<p2->data<<" p2儲存的地址"<<&p2<<endl;

}


>>>

輸出:

p1->data=1 p1儲存的地址0x61fe18
p2->data=1 p2儲存的地址0x61fe10

p1->data=2 search1 p1儲存的地址0x61fe18
p2->data=2 search2 p2儲存的地址0x61fdf0

p1->data=2 p1儲存的地址0x61fe18
p2->data=1 p2儲存的地址0x61fe10

Process returned 0 (0x0)   execution time : 0.253 s
Press any key to continue.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM