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

C++二级指针和指针引用

时间:2019-09-07 22:28:51      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:new   add   res   html   sdn   www   src   函数   tps   

前提

已经清晰一级指针和引用。
可参考:指针和引用与及指针常量和常量指针 或查阅其他资料。

一级指针和二级指针

例子

个人觉得文字描述比较难读懂,直接看代码运行结果分析好些,如果想看文字分析,可参考文末参考文章。

#include <iostream>
using namespace std;

void make(int **pp)
{
    **pp = 66;//这样只是改变了指向的值,即a, 指向没有改变
}
int main()
{
     int a=5;
     int *q=&a;
     int **pp=&q;
     cout<<"address:"<<&pp<<"  "<<pp<<"    "<<&q<<"   "<<q<<"      value:"<<*q<<"  "<<a<<endl;
     //可将下面的注释去掉运行通过结果对比查看一级指针与二级指针的关系
//     cout<<*pp<<"  "<<&*pp<<"  "<<*&pp<<"  "<<**pp<<endl;
     make(pp);
     cout<<"address:"<<&pp<<"  "<<pp<<"    "<<&q<<"   "<<q<<"      value:"<<*q<<"  "<<a<<endl;
     return 0;
}

运行结果:

技术图片

如果改为:

#include <iostream>
using namespace std;

void make(int **pp)
{
   int * p=new int(66);
   *pp=p; //这样便使用函数通过二级指针更改了一级指针的指向(值便也改了),但原指向
}
int main()
{
     int a=5;
     int *q=&a;
     int **pp=&q;
     cout<<"address:"<<&pp<<"  "<<pp<<"    "<<&q<<"   "<<q<<"       value:"<<*q<<"  "<<a<<endl;
     make(pp);
     cout<<"address:"<<&pp<<"  "<<pp<<"    "<<&q<<"   "<<q<<"       value:"<<*q<<"  "<<a<<endl;
}

运行结果:

技术图片


指针引用

#include<iostream>
using namespace std;

void make(int *pp)
{
    pp=new int(66); //试图改变p指向的地址,但没有用,因为pp只是p的一个拷贝。
}
int main()
{
    int a=5;
    int *p=&a; //指针变量指向一个int类型的地址
    cout<<"address:"<<&a<<"       value:"<<a<<endl;
    cout<<"address:"<<p<<"       value:"<<*p<<endl;
    make(p);
    cout<<"address:"<<p<<"       value:"<<*p<<endl;
}

运行结果:

技术图片

更改为:

#include<iostream>
using namespace std;

void make(int *&pp)
{
    pp=new int(66); //此时pp相当于p的别名,所以改的就是指针p本身,所以更改成功。
}
int main()
{
    int a=5;
    int *p=&a; //指针变量指向一个int类型的地址
    cout<<"address:"<<&a<<"       value:"<<a<<endl;
    cout<<"address:"<<p<<"       value:"<<*p<<endl;
    make(p);
    cout<<"address:"<<p<<"       value:"<<*p<<endl;
}

运行结果:

技术图片

参考:

二级指针和指针引用函数传参(C++)

C++二级指针和指针引用

标签:new   add   res   html   sdn   www   src   函数   tps   

原文地址:https://www.cnblogs.com/clwsec/p/11483193.html

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