博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++中void型指针
阅读量:6463 次
发布时间:2019-06-23

本文共 841 字,大约阅读时间需要 2 分钟。

问题由来:

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型指针的问题。

下面是个人总结:

  1. void类型表示无类型,从哲学上来说也可以看成是任意类型。
  2. 可以使用任意类型的指针为void型指针赋值,但是不能用void型指针为已知类型的指针赋值。所谓“白马是马,马非白马”。
  3. 函数的参数使用void型指针,表示可以传入任意类型的参数。(爽不?)
  4. void可以看成是一种抽象类型,想想virtual,虚函数、虚基类,他们都是抽象的,是虚的。所以不能实例化一个虚的东西,也就是说不能声明一个void型的变量(注意这里我说的是变量,不是指针)。可以想象成void类型是所有已知类型之上的一个抽象类型。
  5. 既然void类型是抽象的,那么就不能对它进行具体的算数运算,例如void * pvoid; pvoid++; pvoid +=2;都是invalid,指针的++操作是给当前分配的内存空间增大一个单元的空间,可是void类型你都不知道它要存啥,你当然不知道他一个单元要多大,所以就不能做算术运算。
  6. 暂留

转载于:https://www.cnblogs.com/CoolSummer/p/3205679.html

你可能感兴趣的文章
python全栈_002_Python3基础语法
查看>>
C#_delegate - 调用列表
查看>>
交换机二层接口access、trunk、hybird三种模式对VLAN的处理过程
查看>>
jQuery.extend 函数详解
查看>>
[转]Windows的批处理脚本
查看>>
lnmp高人笔记
查看>>
[转载] OpenCV2.4.3 CheatSheet学习(三)
查看>>
C#中跨窗体操作(2)--消息机制
查看>>
子程序框架
查看>>
多维数组元素的地址
查看>>
数据库运维体系_SZMSD
查看>>
aspose 模板输出
查看>>
福大软工1816 · 第三次作业 - 结对项目1
查看>>
selenium多个窗口切换
查看>>
《单页面应用》所获知识点
查看>>
静态库 调试版本 和发布版本
查看>>
DB2 错误码解析
查看>>
读书笔记四
查看>>
JAVA中的finalize()方法
查看>>
慕课网学习手记--炫丽的倒计时效果Canvas绘图与动画基础
查看>>