P表示指針,那么PVOID表示:void * ---無類型指針
所有指針都是一個(gè)32位二進(jìn)制數(shù)(32位系統(tǒng)下),這個(gè)意義上說所有指針都是一樣的,它們的大小一樣,用于指向內(nèi)存中的某處地址,然而指針為什么要有類型之分呢?答案是指針偏移。例如p為一個(gè)指針,它指向內(nèi)存某處地址,那么p+1(或者寫p[1])是什么意思呢?答案是p指向地址的后面那個(gè)地址,那么后面多少呢?這就看指針類型了,假如它是字符指針,那么就是后面一個(gè)字節(jié),假如它是整型指針,那就是后面第四字節(jié),假如它是一個(gè)結(jié)構(gòu)體,那就是后面sizeof(結(jié)構(gòu)體)個(gè)字節(jié)。可以說,指針有類型之分,完全就是為了計(jì)算地址偏移。這一區(qū)別到了匯編級就沒有分別了,匯編級不存在指針類型,只有指針偏移數(shù)。
那么void 指針是啥呢?答案是無類型指針。干啥用呢?它只是一個(gè)地址指向,從不用計(jì)算偏移(void 了也沒法確定如何偏移了…),它只能指向一整塊內(nèi)存,只能通過它來訪問這塊內(nèi)存,不能用偏移訪問(p 1,p[1]等,千萬不要用在void指針上)。它的好處是什么呢?答案是不用強(qiáng)制轉(zhuǎn)換,任何類型指針都可直接賦值給一個(gè)void 指針,而不用轉(zhuǎn)換。