码迷,mamicode.com
首页 > 编程语言 > 详细

c++ *和*&

时间:2020-06-14 12:56:45      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:c语音   lan   turn   clu   type   void   构造函数   就是   lang   

在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.

c++ *和*&

标签:c语音   lan   turn   clu   type   void   构造函数   就是   lang   

原文地址:https://www.cnblogs.com/rower/p/13124114.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!