C++學習筆記———void *

本篇文章簡單總結一下C++中void*的用法。在C++中,用void*  定義一個void類型的指針,它不指向任何類型的數據,意思是,void*指針“指向空類型”或“不指向確定的類型”,而不要理解爲void*指針能指向“任何的類型”數據。簡而言之,void*只提供一個地址,沒有指向。void *的一些用法如下:

 

1. void *類型可以接受任意類型指針。

例如:

void *p1;

char *p2 = “hellp”;

p1 = p2;

或者

int a;

int *p = &a;

memset(p, 0, 4);

 

char c[4];

char *p = c;

memset(p, 0, 4);

memset的第一個參數就是void *。以上代碼運行都是沒有問題的,任何類型的指針都可以直接賦值給它,無需進行強制類型轉換。但需要注意的一點是,void *的類型並不能無需類型轉換直接賦值給其他類型,比如malloc的返回值是void *,那麼我們一般這樣寫:char *p = (char *)malloc(4);

 

2.不允許使用void*指針操作它所指向的對象

例如,不允許對void*指針進行解引用。不允許對void*指針進行算術操作。

比如我們不要做類似這樣的操作:

void *p;

p++;

 

另外,在實際開發中,void* 使用時最終都要強制轉換成某種明確的數據類型。

 

參考https://blog.csdn.net/Gordennizaicunzai/article/details/78007584

        https://blog.csdn.net/xjsbkx/article/details/78833066

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