美文网首页
关于C++引用&指针的一些基础知识

关于C++引用&指针的一些基础知识

作者: xiaoxingyun | 来源:发表于2016-10-03 01:35 被阅读69次

    最近在学习C++,所以总结了一些引用和指针的基础知识分享给大家。下面是一些相关的概念。
    复合类型:是指基于其他类型定义的类型,引用和指针就是其中的两种。

    • 引用(Reference):就是为对象起了一个别名,定义之后就把引用和他的初始值绑定(注意不是赋值)在了一起,一旦初始化完成,引用就无法再绑定其它对象了,之后对引用的所有操作都是在与之绑定的对象身上进行的。声明方式为&d,d为声明的变量名。
      例如
    int ival=1024;
    int &refVal=ival; //refVal 指向ival(是ival的另外一个名字)
    int &refVal2;//错误,引用必须要有与之绑定的对象
    int &refVal3=refVal;//refVal3绑定到了与refVal绑定的对象上,即refVal3绑定到了ival上
    int i=refal;//i被初始化为ival的值
    int &refVal4=10;//错误,初始对象必须是一个对象
    
    • 指针(Pointer):是指向另外一种类型的复合类型,与引用相似,指针也实现了对其它对象的间接访问,但是有几点不同。其一,指针本身就是一个对象,允许对指针赋值和拷贝,而且在指针的生命周期内可以先后指向几个不同的对象。其二,指针无需在定义时赋初值,在块定义域内定义的指针如果没有被初始化,将拥有一个不确定的值。
      声明方式为*d,d是变量名。
      指针存放某个对象的地址,要想获取该地址,需要取地址符&。例如:
    int ival=42;
    int *p=&ival;//p存放变量ival的地址,p是指向ival地址的指针
    

    第二条语句把p定义为一个指向int类型的指针,随后初始化p另其指向名为ival的int对象,因为引用不是对象,没有实际地址,所以不能定义指向引用的指针。

    • 使用指针访问对象:如果一个指针指向了一个对象,则允许使用解引用符来访问该对象。为d赋值实际上是为d所指的对象赋值。
    int ival=0;
    int *p=&ival;
    cout<<*p<<endl;// 由*得到指针p所指的对象,输出0
    *p=2;//由*得到p所指的对象,即可经由p为ival赋值
    cout<<*p;//输出0
    

    基础知识就是这些啦,本人也是小菜鸟一枚,有错误的地方欢迎指正。

    相关文章

      网友评论

          本文标题:关于C++引用&指针的一些基础知识

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