zoukankan      html  css  js  c++  java
  • C++中void型指针

    问题由来:

    PX_FORCE_INLINE    void*    operator new(size_t size, const char* handle, const char * filename, int line)
        { 
        return getSampleAllocator()->allocate(size, handle, filename, line);
        }

    在这里可以看到函数返回值是一个void*,也就是void型的指针。

    那么void型指针是个什么东西呢?

    void型指针所指的内存区域,可以存储任何类型的数据,也可以说是没有数据类型。

    直到使用这一块内存的时候,才知道给里面装的是啥数据。

    ——————————我是你们的老朋友,分割线。————————————

    void及void指针含义的深刻解析一文很清楚的说了void类型和void型指针的问题。

    下面是个人总结:

    1. void类型表示无类型,从哲学上来说也可以看成是任意类型。
    2. 可以使用任意类型的指针为void型指针赋值,但是不能用void型指针为已知类型的指针赋值。所谓“白马是马,马非白马”。
    3. 函数的参数使用void型指针,表示可以传入任意类型的参数。(爽不?)
    4. void可以看成是一种抽象类型,想想virtual,虚函数、虚基类,他们都是抽象的,是虚的。所以不能实例化一个虚的东西,也就是说不能声明一个void型的变量(注意这里我说的是变量,不是指针)。可以想象成void类型是所有已知类型之上的一个抽象类型。
    5. 既然void类型是抽象的,那么就不能对它进行具体的算数运算,例如void * pvoid; pvoid++; pvoid +=2;都是invalid,指针的++操作是给当前分配的内存空间增大一个单元的空间,可是void类型你都不知道它要存啥,你当然不知道他一个单元要多大,所以就不能做算术运算。
    6. 暂留
  • 相关阅读:
    搭建前端监控系统(备选)Js截图上报篇
    搭建前端监控系统(三)静态资源加载监控篇
    搭建前端监控系统(一)阿里云服务器搭建篇
    springboot+缓存
    springboot集成springDataJpa
    从零开始搭建SpringBoot项目
    Java1.8的HashMap源码解析
    SpringMvc流程分析,简单源码分析
    Java定时任务
    Java性能调优
  • 原文地址:https://www.cnblogs.com/CoolSummer/p/3205679.html
Copyright © 2011-2022 走看看