zoukankan      html  css  js  c++  java
  • C/C++

    一、指针

      1、指针与指针变量的区分

        a、指针:指针就是内存编号,也就是内存地址,通俗的讲,指针就是变量的地址。

          注1:指针的大小是根据计算机的操作系统而定的,跟变量类型无关

          注2:如果是32位的操作系统,那么在定义一个指针时,指针的大小为4字节,而64位的指针大小为8字节,

        b、指针变量:指针变量顾名思义,就是可以在地址(指针)中存储的变量。

          注1:存储的变量,不是指针地址,因此存储的数据与定义变量的类型有关

          注2:指针是一种类型,指针变量是一种变量,就好比 int   和 (int  j 中的j)的区别

      2、指针的作用

        a、函数与函数之间共享变量

            为什么需要共享变量:因为不同函数之间命名空间独立,如果只是值传递的话,不能解决函数之间值的”沟通问题“,这是就需要传递地址共享变量

        b、优化函数与函数之间的数据传递

            原因:如果通过值传递时数据过大比如ldouble类型的就是8个字节,而32位操作系统的指针的大小(4字节)是固定的,因此可以传输较快些

        c、直接访问硬件内存

            原因:应为硬件内存的编号就是指针,所以指针可以直接访问

        d、申请堆内存

            原因:1、堆内存只有编号,虽说编号就是名字,但编号过于冗长,有些繁琐,

                  2、堆内存返回的就是一个指针,这是就需要一个指针来接受一个堆内存空间的地址

        e、方便处理一些相对复杂的类型

            比如,字符串、结构体等

      3、空指针与野指针

        a、空指针: 就是指针指向的NULL这个内存空间,NULL空间是一个特殊的空间,指针变量不能访问此空间,访问就会出错,出错的类型与操作系统有关

        b、野指针:就是指针指向的空间是未知的,不收程序员控制,

          1)空指针与野指针的比较 : 空指针就是定义一个指针时直接初始化赋值NULL,野指针就是定义是没有初始化

            a)空指针虽说定义了一定会错误,但可以收到控制

            b)野指针由于指向空间的未知的,不收程序员控制,因此是很危险的 ,因此在定义一个指针是最好初始化

            c)野指针可能造成一下3种情况:1、脏数据:就是将已经存在的数据给重新赋值覆盖掉

                           2、段错误:错误类型很多,需要根据情况而论

                           3、”一切正常“:这只是表面正常而已

    二、引用

       1、引用的概念是在c++普及的,而指针最经常出现在c中

       2、引用最通俗的解释就是取别名

       3、引用的符号为: 类型名&  别名   例如int& a = b;

       4、引用与取地址符的区别 :在于(&变量)是在定义是定义时出现还是在定义后出现

          a)引用只有在初始化定义的时候才是引用

          b)取地址就是一个变量已经定义过了,在用&变量就是取变量的地址

    三、总结

      讲道理引用与指针的区别不大,因为C++也是C的扩展版本,C++底层封装的就是C

      引用与指针的区别:

          1、引用是给一个变量取个别名,不会消耗内存孔家,指针需要先创建然后才能指向变量

          2、由第一点可以知道,引用访问、”传值“的速度更快,因此C++中一般都是用引用的

               a)、速度更快

               b)、为了与C有区别,两种语言如果没有区别,那么就不是两种语言了

          3、虽说引用的使用对变量的处理比指针更快,但有一点引用比不上指针,就是对堆空间的申请,

               原因:对空间的申请返回的是指针变量

  • 相关阅读:
    课程设计第八天,8.26
    课程设计第七天,08.25
    赖世雄英语
    英语语法-小学
    CSS(Cascading Style Sheet)
    Coredraw x7
    Servlet
    团队作业4——第一次项目冲刺(Alpha版本)2017.11.18
    团队作业4——第一次项目冲刺(Alpha版本)2017.11.16
    团队作业4——第一次项目冲刺(Alpha版本)2017.11.14
  • 原文地址:https://www.cnblogs.com/goul/p/9470530.html
Copyright © 2011-2022 走看看