关于C++中void*的小作用浅析

 更新时间:2017年08月30日 10:07:17   作者:sinolzeng  
这篇文章主要给大家介绍了关于C++中void*的一些小作用,文中通过示例代码介绍的非常详细,对大家学习或者使用C++具有一定的参考学习价值,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。

本文主要给大家分享了关于C++中void*的一些你可能不了解的小作用,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

先来看一段代码:

#include <iostream> 
#include <string> 
using namespace std; 
 
void o(int* x, void* y){ 
 cout << *x << endl; 
 cout << x << endl; 
 cout << *(int*)y << endl; 
 cout << (int*)y << endl; 
} 
 
 
int main() 
{ 
 int a = 1, b = 2; 
 o(&a, &b); 
} 

我们看上面的小代码,函数o传入两个地址,一个是a,另一个是b,我们先来看看输出的情况:

1 
0x7038f28b8e98 
2 
0x7038f28b8e9c 

首先最简单的,*x表示取值,所以输出了1,接着x表示&a,也就是a的内存地址,所以我们可以看到输出了一个地址。这些都是基础,比较简单。

比较不好理解的地方来了,void* 指针可以代替任意类型的指针,但是呢,在输出或者调用的时候,你明确采取强制类型转换的方式,明确地告诉编译器这是个什么指针。

所以我们先看第四个,第四个(int*) y相当于告诉编译器这就是一个整数类型的指针,所以就输出了地址,那么第三个呢,加上*表示的就是取值,不过这里要记得,千万不要写成(int*)*y,因为*y是不存在的(在没有确定类型之前这样是会报错的)所以必须注意。

这种传递方法可以用于不定类型的指针传参,但是由于后面解析的时候需要强制类型转换,所以在执行效率上稍微低一些,如果是进行大规模调用的话那么请谨慎。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • C/C++的各种字符串函数你知道几个

    C/C++的各种字符串函数你知道几个

    这篇文章主要为大家详细介绍了C/C++的各种字符串函数,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • C语言自定义函数的实现

    C语言自定义函数的实现

    这篇文章主要介绍了C语言自定义函数的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • windows下用c++获取本机ip地址的三种方法

    windows下用c++获取本机ip地址的三种方法

    工作过程中遇到一个需求,需要获取本机ip地址,同时获取本机网络连接情况,即网线是否连接,经过多番搜索,本文给大家介绍了3种方案,通过代码示例介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • Linux管道揭秘之匿名管道连接进程世界的方法

    Linux管道揭秘之匿名管道连接进程世界的方法

    文章介绍了Linux中的管道(Pipe)概念,包括其定义、作用、类型、工作原理以及如何在父子进程间使用,匿名管道是进程间通信的一种机制,通过pipe()系统调用创建,具有读端和写端文件描述符,文章详细解释了匿名管道的创建、使用流程、4种情况和5种特性
    2024-11-11
  • C语言实现的统计素数并求和代码分享

    C语言实现的统计素数并求和代码分享

    这篇文章主要介绍了C语言实现的统计素数并求和代码分享,来自PAT平台(浙江大学计算机程序设计能力考试系统)的一个题目,需要的朋友可以参考下
    2014-08-08
  • C++运算符重载详情介绍

    C++运算符重载详情介绍

    这篇文章主要介绍了C++运算符重载,C++当中除了函数可以重载之外,其实运算符也是可以重载的,C++根据操作数的数目和类型来决定要使用哪一种操作,下面一起进入文章里哦阿姐更多详情吧
    2022-01-01
  • C语言之整数与浮点数运算的类型转换规则详解

    C语言之整数与浮点数运算的类型转换规则详解

    这篇文章主要介绍了C语言之整数与浮点数运算的类型转换规则,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03
  • 利用Debug调试代码解决0xC0000005: 读取位置 0x0000000000000000 时发生访问冲突问题

    利用Debug调试代码解决0xC0000005: 读取位置 0x0000000000000000 时发生访问冲突问

    这篇文章主要介绍了利用Debug调试代码解决0xC0000005: 读取位置 0x0000000000000000 时发生访问冲突,本文给大家分享完美解决方案,需要的朋友可以参考下
    2023-03-03
  • C++之eigen安装与测试方式

    C++之eigen安装与测试方式

    这篇文章主要介绍了C++之eigen安装与测试方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • c++判断文件是否存在的方法汇总

    c++判断文件是否存在的方法汇总

    这篇文章主要介绍了c++判断文件是否存在的方法汇总,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08

最新评论