參考<>
void *是一種特殊的指標型別,可用於存放任意物件的位址。
舉個例子:
int p=0,*pi=&p;
void *pv=&p;
pv=pd;
但是一旦某個位址放到了void *pv中,就不能利用&pv進行操作了——
void *中存放的是未知物件的位址,所以無法操作該指標所指向的內容,但是可以對該指標進行操作,比如賦值,作為輸入輸出等。
如果想要找回以前的指標怎麼辦,可以用static_const強制轉換,比如上例子中
int *dp=static_castpv;
當把指標存放在void *中,並且使用static_cast將其強制轉換回原來的型別時,應確保指標的值保持不變,必須確保轉換後所得的型別就是指標所指的型別。型別一旦不符合,將產生未定義的後果。
下例子,void *運用在new和delete函式中的情形:
void *operator new(size_t size)
void operator delete(void *mem) noexcept (free(mem);}
remap的那些事
月14日 今天還在看啟動 看到target.c這裡。先說說target.c的職責。target.c檔案包含和目標初始化相關的 如remap設定 系統時鐘設定和儲存器加速模組設定等,以及irq和fiq的異常處理空函式。好吧,這裡 看到了remap就好好查資料把它搞清楚咯!其實我前面看過這個了,只是人上...
AfxWinMain的那些事
afxwinmain函式原形如下 去掉了原來的很多沒用的注釋和累贅 cpp view plain copy print?int afxapi afxwinmain afxwininit函式 建立當前應用程式主線程 initinstance函式 內部通過create 函式來完成視窗的註冊,建立更新和顯...
java hashset的那些事
hashset不能往集合中放置相同的元素.而如何判斷往集合中放置的元素是否相同,則是通過object類的兩個 hashcode 和equals 方法來確定的.具體說明如下 具體的判斷過程為 當使用hashset時,hashcode 方法首先就會被呼叫來判斷已在hashset中的物件的hash cod...