由于void* 可以被任何指针赋值,所以以void*作为函数参数可以使得接口更容易接受不同类型的参数,不过需要注意的时,实际操作时还需要利用强制类型转换,将指针转换为原类型,否则在内存上会有问题。

    一般情况下void*不支持解引用,同样不支持运算。(因为无法清楚知道所指地址的对象占用了多大的内存)

以下为数组指针的一些总结(T可参考int)

表达式 a指针指向 解释 维数 数组中元素类型
T* a; T* 指向整数的指针 1维 整数指针
T a[m]; T(*) 指向整数数组头 m维 整数
T* a[m]; T* (*) 指向整数的指针数组 m维 指针->整数
T a[m][n] T(*)[n] 指向整数数组的指针数组 m维 指针->整数数组

下面考虑函数调用void*参数再转化为数组指针的几个例子:

#include <iostream>
using namespace std;
int f1(void* arg){
int* a1=(int*)arg;
return *a1;
}
int f2(void* arg){
int* b1=(int *)b1;
return b1[0];
}
int f3(void* arg){
int** d1=(int **)arg;
return *d1[0];
}
int f4(void* arg){
int(*c)[2]=(int(*)[2])arg;
return c[0][0];
}
int main(int arg,char* argv[]){
int a=1;
int e=5;
int b[2]={1,2};
int* d[2]={&a,&e};
int c[2][2]={1,2,3,4};
cout<<f1(&a)<<"\n"<<f2(b)<<"\n"<<f3(d)<<"\n"
<<f4(c)<<endl;
return 0;
}
//最后的输出为1,9,5,4

最新文章

  1. Codeforces 710F String Set Quries
  2. C# 可视化读取文件、文件夹
  3. rpm 软件安装
  4. Android 数据存储之 文件存储
  5. eclipse部署上Tomcat后的clean和publish功能
  6. tomcat 粗略笔记
  7. OC4_XML文件解析
  8. webSphere中文日志乱码,设置日志编码方法
  9. Spring简单的文件配置
  10. hdu 4274 Spy&amp;#39;s Work(水题)
  11. LeetCode题解 15题 第二篇
  12. 开源的.NET定时任务组件Hangfire解析
  13. Java命令模式以及来自lambda的优化
  14. React-报错Warning:setState(...)on anunmounted component
  15. MySQL远程链接
  16. SpringCloud实战7-Config分布式配置管理
  17. Python——Pycharm打包exe文件
  18. 计蒜客 2019 蓝桥杯省赛 B 组模拟赛(三)一笔画
  19. &gt;/dev/null 2&gt;&amp;1和2&gt;&amp;1 &gt;/dev/null区别
  20. 2.Linux基础命令

热门文章

  1. python3下应用pymysql(第二卷)
  2. [Redis] Redis哨兵模式部署 - zz胖的博客
  3. java的自增和自减
  4. netty源码分析(十八)Netty底层架构系统总结与应用实践
  5. 吴裕雄--天生自然 R语言开发学习:时间序列(续一)
  6. from PIL import image报错
  7. 云服务器之——Linux下配置JDK环境
  8. 初识Mybatis之工程搭建
  9. 码海拾遗:简述C++(一)
  10. 多个计数器在Vuex中的状态