今天在寫項目需求的時候,用到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上,需要用第二種方法!!!!
非常感謝老大和羣裏的朋友!!!!