zoukankan      html  css  js  c++  java
  • malloc与new,C++中的指针与引用,C++struct与class的区别

    一.struct与class的区别

      1. struct与class的区别不大

        在默认情况下,class默认的权限是private(私有的),struct默认的是public(共有的)。

      2.但是在C++中,struct进行了扩展,现在它已经不仅仅是一个包含不同数据类型的数据结构了,它包括了更多的功能。

    二 .malloc与new,delete与free的区别

      1.malloc与free是库函数里的函数,调用时要添加头文件,delete与new是C++中的运算符

      2.malloc返回值是void*指针,new返回的是有类型的指针

      3.malloc创建时不会调用构造函数,free不用调用析构函数,但new与delete会自动调用

      4.delete不可以重复释放,但是可以释放空指针。

    三.指针与引用

    《A.引用》  

      1.通俗的讲,引用就是取别名

      2. 引用必须初始化,不能定义空引用,“野引用”,“悬空引用”是存在的(引用堆内存的数据,当堆内存释放后就不应该使用了)

      3.引用只能是一次性的,无法再更改(引用一旦成功,他就是一个变量了)

      4. 引用也可以当做函数的参数,它引用的对象就是函数的实参,引用可以达到指针的效果

        a.函数之间共享变量(指针也可以)

        b. 提高参数的传递效率(比指针要高)

        c. 当参数来使用,

          建议:能使用引用就不要使用指针,但是引用不可以取代指针

      5. 引用也可以当做函数的返回值,但绝不能返回局部变量的引用

    《B.指针》

      1.可以在这三种情况下使用指针:1.函数之间共享变量 2. 使用堆内存 3. 优化传参 4. 可以访问硬件内存

      2. 使用指针要注意的情况

        1. 定义指针变量时初始化

        2. 不返回局部变量的地址

        3. 指针所指向的空间被释放时,要即使置空

      3. 与const相关的指针

        const int* p :不能通过*p去修改他指向的内存

        int const* p 不能通过*p去修改它指向的内存

        int * const p : 无法改变p

        const int * const p :p无法改变,*p无法去改变内存

  • 相关阅读:
    四则运算1
    四则运算3
    数组1
    四则运算单元测试
    四则运算2
    数组3
    数组2
    spring aop对service层日志和异常的处理
    Linux设置开机启动
    数据仓库开发——Kettle使用示例
  • 原文地址:https://www.cnblogs.com/gumpzlc/p/9532378.html
Copyright © 2011-2022 走看看