C++ void* 使用心得

    今天在寫項目需求的時候,用到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上,需要用第二種方法!!!!

    非常感謝老大和羣裏的朋友!!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章