美文网首页
c++指针和指针的引用,指针的指针的区别

c++指针和指针的引用,指针的指针的区别

作者: 一ccc | 来源:发表于2017-11-09 22:39 被阅读0次

在打平衡二叉树时,看别人代码用到了指针的引用,因为之前没有用过我以为是他多此一举,但是并不是.
首先是函数传递指针

#include<iostream>
using namespace std;
int a = 1;
void test(int *p)
{
   p = &a;
}
int main()
{
   int d = 2;
   int *p = &d;
   cout << *p << endl;
   test(p);
   cout << *p << endl;
}

运行结果:

1.png
在正常情况下我们想要的结果是2 1
但是输出却是2 2;
因为指针p传递到test函数时接受的是指针,
改变的是形参,而实参main中指针p没有发生变化.
传递指针的指针
#include<iostream>
using namespace std;
int a = 1;
void test(int **p)
{
    *p = &a;//一次解析,是被指向指针的指针
}
int main()
{
    int d = 2;
    int *p = &d;
    cout << *p << endl;
    test(&p);//将*p的地址穿入test
    cout << *p << endl;
}

运行结果:

2.png
这样结果就对了.但是两次解析让人头晕.
#include<iostream>
using namespace std;
int a = 1;
void test(int *&p)//对main中*p的引用
{
    p = &a;
}
int main()
{
    int d = 2;
    int *p = &d;
    cout << *p << endl;
    test(p);
    cout << *p << endl;
}

运行结果: 2 1
想起来c++ primer书上刚讲引用的例子

string a="i''m a good boy"
for(auto s:a)
toupper(s);
cout<<a<<endl;

这样a不会变,如果用auto &s的话就说输出I'M A COOL GOOD BOY


运行环境vs2017

相关文章

  • C++基础

    C++ 值传递、指针传递、引用传递详解C++中引用传递与指针传递区别 引用传递和指针传递的区别 引用的规则:(1)...

  • c++指针和指针的引用,指针的指针的区别

    在打平衡二叉树时,看别人代码用到了指针的引用,因为之前没有用过我以为是他多此一举,但是并不是.首先是函数传递指针 ...

  • java中的引用与c++中的指针的区别

    java中的引用与c++中的指针的区别 Java的引用和C++的指针都是指向一块内存地址的,通过引用或指针来完成对...

  • 指针和引用的辨析

    先来看两个图 指针与引用的区别 1.指针在C和C++中均有,而引用是C++独有的特性(*指针申明符号,&引用申明符...

  • c++指针和引用的详细介绍(指针常量、常量指针)

    c++指针和引用的详细介绍 1、指针和引用的区别 指针-对于一个类型T,T就是指向T的指针类型,也即一个T类型的变...

  • 绿盟面试准备

    C++基础知识 指针和引用的区别: 指针是一个变量 ,引用是别名.指针可以初始化为空, 引用必须初始化为具体的值....

  • 随笔1

    c++ 指针和引用的区别 1 指针是指向一个地址,未初始化的指针没有分配内存,那么此时此时直接使用指针是危险的,所...

  • 2018-04-12 C++问题小结以及面向对象思想

    1、C++指针和引用的区别 指针p:可以看做是一个对象,它有自己的地址(指针有自己在内存中的地址,所以有指向指针的...

  • 指针和引用的区别

    参照lyd_253261362的专栏的文章详细介绍=====c++中的引用与指针的区别 c++中的引用与指针的区别...

  • C++基本问题——指针与引用的区别

    指针与引用的区别 指针可以是空指针,但是引用不能是空引用。这就导致下面一个区别。 指针可能是非法的,引用总是合法的...

网友评论

      本文标题:c++指针和指针的引用,指针的指针的区别

      本文链接:https://www.haomeiwen.com/subject/bgaeuxtx.html