美文网首页
C++ supplement--引用及指针

C++ supplement--引用及指针

作者: sunsimple | 来源:发表于2017-10-16 21:34 被阅读0次

    在c++的编程实现过程中,用到的引用主要是在函数的形参中,声明引用型的变量使得形参的地址指向实参。

    其实引用相当于是另一个变量的别名而非对象,在声明引用型变量时必须对其进行初始化,引用将和它的初始值对象一直绑定在一起,并且同一个引用不能重新绑定到另一个对象。如此看来,引用对其绑定的变量 同生死共存亡,矢志不渝~~好感人的场面:)

    需要注意的是,一般的变量初始化时,初始值是通过拷贝的方式到新建的对象中,然而引用就是直接的捆绑啦~~另外,因为引用本身不是一个对象,所以不能定义引用的引用。并且引用只能绑定在对象上,不能与字面值或某个表达式的计算结果绑定在一起。

    其实,只要记住在定义引用型数据时相当于是存放的一个地址值,在去掉&符号使用该引用型变量时相当于是在对其绑定的变量进行操作,便能比较容易理解上述的一些约束了。


    指针:

    还记得本科的时候,老师在说到指针的时候,从一级指针到二级指针,一开始的时候觉得指针类型就是地址,但是因为它的指向性问题,所以指针的操作其实其复杂度是比较高的~~希望不要被绕晕哦~~

    既然指针是一种比较特殊的变量类型,当然也就需要有特定的标记来显示它了

    不同于引用,指针是一种实际的变量,该变量存放的是地址值,在声明中,指针的类型是被用于指定它所指向对象的类型,所以在给指针变量赋值时,应该注意类型的匹配,如果指针指向了一个其他类型的对象,对该对象的操作将会发生错误。

    ***需要指出的是,因为引用不是一种对象,没有实际地址,所以不能定义指向引用的指针。

    那怎么来访问指针所指向的对象呢~~那就得用解引用符(*)了~~

    指针值:
    即指针值可能出现的几种情况

    其中只有第一种情况是最为安全可靠,品质保证的,2,3,4这三种情况因为没有具体指明所指向的对象,所以在操作时会存在一定的风险。另外在试图使用一个指针之前可以先检查一下它是否为空,给指针赋值为空的方式有:

    需要注意的是第三种是在新的c++版本中存在的一种预处理方式,比较常用的是第一种方式。对于第二种方式需要注意的是,不要试图使用一个值等于0的变量给指针赋值,即:int zero=0;int *p1=zero.这样是错误的。

    强调指出,为了程序的安全起见,在定义指针时应使其初始化:

    在进行指针的相关操作时,需要分析清楚一条赋值语句到底是改变了指针的值还是改变了指针所指向对象的值。记住:赋值永远改变的是等号左侧的对象的值,如果前面有解引用符(*),则是指所指向的对象,否则即为指针这个变量本身的地址值。

    ***在这儿了解到一点:一个指针指向某对象,同时另一个指针指向另外对象的下一地址,此时有可能这两个指针值相等。

    另外简单说明一下使用比较少的一个类型的指针(void*),以内存空间的视角来看指针,因为不知道所指的具体类型,所以无法对其指向的对象进行操作

    至此,关于变量中与地址有关的变量进行了一个简要的说明,记住基本点才能在后续的应用中繁而不乱~~

    相关文章

      网友评论

          本文标题:C++ supplement--引用及指针

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