zoukankan      html  css  js  c++  java
  • 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.
    
  • 相关阅读:
    Objectivec中的@property和@synthesize详解
    objectc笔记
    iOS常用开源框架之ASIHTTPRequest
    oschina引用库说明
    UITableView的重用机制
    iOS常用开源框架之AFNetworking
    ObjectiveC中@class和#import的区别
    Python中文文档 目录(转载)
    关于Console 2窗口内容偏移以及中文输入的问题
    Python 中除法运算需要注意的几点
  • 原文地址:https://www.cnblogs.com/rower/p/13124114.html
Copyright © 2011-2022 走看看