void*类型可以存储任何类型的指针,使用的时候强制转化成对应类型的指针便可。

#include <iostream>
#include <vector>
using namespace std;

vector<void*> all;

int myadd(int i, int j)
{
    return i + j;
}

int main(int argc, char* argv[])
{
    ;
    all.push_back(&a);
    ;
    all.push_back(&b);
    char c = 'g';
    all.push_back(&c);
    int(*fun)(int, int) = myadd;  //函数指针
    all.push_back(fun);

    cout << (*(]) << endl;
    cout << (*(]) << endl;  //可以正常运行,但是结果不对。试图将int*转化成double*
    cout << (*(]) << endl;
    cout << (*(]) << endl;     //可以正常运行,但是结果不对。试图将char*转化成int*
    cout << (*(]) << endl;  //可以正常运行,但是结果不对。试图将char*转化成double*
    cout << (*(]) << endl;
    cout << ((]))(, ) << endl;

    system("pause");
}

如上所示,因为C++是类型不安全的语言,所有的指针都可以相互强转。编译器是不会提示或者报错的。所以这也是四处寻找指针的万恶之源。

C++ void*的使用的更多相关文章

  1. 如何理解typedef void (*pfun)(void)

    问题: 在刚接触typedef void (*pfun)(void) 这个结构的时候,存在疑惑,为什么typedef后只有一"块"东西,而不是两"块"东西呢?那 ...

  2. C#中的null与void

    一.null: 1.明义,null是什么意思? null是指一个变量没有指向具体对象的有效引用. 这句话什么意思呢?意思就是 1).能够使用null修饰的是变量: 2).主要指的是引用. 那么这就引出 ...

  3. 你必须知道的指针基础-7.void指针与函数指针

    一.不能动的“地址”—void指针 1.1 void指针初探 void *表示一个“不知道类型”的指针,也就不知道从这个指针地址开始多少字节为一个数据.和用int表示指针异曲同工,只是更明确是“指针” ...

  4. js中 javascript:void(0) 用法详解

    点击链接不做任何事情: <a href="#" onclick="return false">test</a> <a href=& ...

  5. html 空链接 href="#"与href="javascript:void(0)"的区别

    #包含了一个位置信息 默认的锚是#top 也就是网页的上端 而javascript:void(0) 仅仅表示一个死链接 这就是为什么有的时候页面很长浏览链接明明是#但跳动到了页首 而javascrip ...

  6. 原生JS:delete、in、typeof、instanceof、void详解

    delete.in.typeof.instanceof.void详解 本文参考MDN做的详细整理,方便大家参考[MDN](https://developer.mozilla.org/zh-CN/doc ...

  7. VS2012 Unit Test(Void, Action, Func) —— 对无返回值、使用Action或Func作为参数、多重载的方法进行单元测试

    [提示] 1. 阅读文本前希望您具备如下知识:了解单元测试,了解Dynamic,熟悉泛型(协变与逆变)和Lambda,熟悉.NET Framework提供的 Action与Func委托.2.如果您对单 ...

  8. IOS 杂笔-16 (-(void)scrollViewDidEndScrollingAnimation:方法使用注意)

    今天在写项目的时候,遇到了一件令人抓狂的事情. 正如标题所示,被这个方法弄的团团转. -(void)scrollViewDidEndScrollingAnimation:是协议里的方法. 意味当动画结 ...

  9. void main() && int main()

    C/C++ 中从来没有定义过void main( ) .C++ 之父说过: The definition void main( ) { /* ... * / } is not and never ha ...

  10. void 0作用

    undefine 是可以被赋值的. 但是void 操作符 通过 计算 void 后面的变量名后还是会返回一个undefined ,这样就保证了你的undefined即使被定义了,采用void 表达式, ...

随机推荐

  1. 转 苹果企业级帐号进行ipa打包,分发,下载等流程

    1,企业帐号介绍(1)使用企业开发帐号,我们可以发布一个 ipa 放到网上,所有人(包括越狱及非越狱设备)都可以直接通过链接下载安装,而不需要通过 AppStore 下载,也不需要安装任何证书.(2) ...

  2. Bash:-3次错误输入退出脚本

    Limit_Condition() { let count++ ]];then echo "超过3次机会,自动关停脚本" exit fi Comfirm() { count= wh ...

  3. IOS CALayer的阴影属性

    @property(nullable) CGColorRef shadowColor; /* The opacity of the shadow. Defaults to 0. Specifying ...

  4. js爬虫

    1.爬虫相关的包 (1)const request =  require('superagent'); // 处理get post put delete head 请求  轻量接http请求库,模仿浏 ...

  5. 关于el jstl

    requestScope表示从request范围内取得.其他的还有sessionScope, pageScope和applicationScope,分别对应4种属性范围.而如果直接写${passwor ...

  6. 后端学 Angular 2 —— 组件间通信

    1. 父组件向子组件传递信息 使用@Input 子组件的属性用 @Input 进行修饰,在父组件的模板中绑定变量 例子: import { Component, OnInit, Input } fro ...

  7. android listview simpleAdaper

    xml (主) <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns: ...

  8. WCF中的流

    https://msdn.microsoft.com/zh-cn/library/ms733742.aspx

  9. Spring MVC中Action使用总结

    Spring MVC中每个控制器中可以定义多个请求处理方法即Action,Action可以有多个不同的参数,有多种类型的返回结果. 可以作为Action的参数类型有: 表单对象基本数据类型,包括包装类 ...

  10. win7和u盘redhat7.1双系统安装总结

    最近win7系统越用越卡,又没钱买mac只能想办法装以下linux系统,听说redhat服务器用的比较多,就想尝试一下装一个redhat.当然,和所有人一样,搜索了很多资料.我选择装双系统,因为要抛弃 ...