今天在写项目需求的时候,用到void*,开始没搞明白void*到底什么意思,问了老大,一语惊醒梦中人!!!!!!

    event->setUserData((void*)10);

    int* data = (int*)event->getUserData();
    CCLOG("data = %d", data);    

    开始这么设置setUserData,很疑惑为什么不用*data就可以输出10,反而*data就报错了!!!!

    老大说,指针本身的值就是10,我就明白了!!!!

    (void*)10是把10变成了一个指针地址的值,这个地址是没初始化的,所以*data是基本所错了,地址值为10的这块内存地址内容未知!!!!

    后来老大说,直接int data = (int)event->getUserData();就可以了用10这个值了,只要编译器不报错!!!

    

    在群里也问了这个问题,也得到一个解法,直接new出来就OK了,也不会有歧义!

    event->setUserData(new int(10));

    int* data = (int*)event->getUserData();

    int b = *data;

    CCLOG("&data = %d, data = %d", data, *data);

    这样也可以使用10这个值了!!!

    void*这个以前用的少,不明白!!!!今天算是涨知识了!!!!!!!

    如果是int型的用第一种比较方便!!!!!

    IOS上,需要用第二种方法!!!!

    非常感谢老大和群里的朋友!!!!