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无法去改变内存

  • 相关阅读:
    反编译Silverlight项目
    Android 程序中像素(px)跟 单位dp(dip)之间的转换
    保存RichTextBox的文本到数据库,以及如何对RichTextBox的Document做绑定
    做事情要有五个w一个h,做项目也受用
    把RichTextBox的内容保存到数据库
    Android横竖屏切换总结
    64操作系统编译出错。The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine.
    超过连接数时强行登陆3389(远程桌面)的方法
    Android 4.0新增WiFiDirect功能
    前缀和 与 树状数组
  • 原文地址:https://www.cnblogs.com/gumpzlc/p/9532378.html
Copyright © 2011-2022 走看看