空型別指標(void 的理解

2021-07-16 01:29:32 字數 531 閱讀 9332

原文:

void指標是空型別指標,它不指向任何型別,即void指標僅僅是乙個位址,所以空型別指標不能進行指標運算

,也不能進行間接引用(因為指標運算和間接引用都需要指標的型別資訊)。

例如:   void * p;       //僅僅表示p存放乙個位址

p++;         //error:+、-運算離不開指標型別

*p=20.5;     //error:訪問p指向的變數空間需要變數型別資訊

由於其他指標都包含有位址資訊,所以將其他指標的值賦給空型別指標是合法的;反之,將空型別指標賦給其他指標則不被允許,除非進行顯式轉換。

例如:    int a=20;

int* ptr=&a;

void *p=ptr;      //ok 將整型指標值賦給空型別指標(只獲得變數/物件位址而不獲得大小 )

ptr=p;            //error 不能將空型別指標賦給其他指標 

ptr=(int*)p;    //ok 顯式轉換,void指標賦值給其他型別的指標時都要進行轉換 

空型別指標(void 的理解

void指標是空型別指標,它不指向任何型別,即void指標僅僅是乙個位址,所以空型別指標不能進行指標運算,也不能進行間接引用 因為指標運算和間接引用都需要指標的型別資訊 p error 運算離不開指標型別 p 20.5 error 訪問p指向的變數空間需要變數型別資訊由於其他指標都包含有位址資訊,所...

空指標和void 型別指標

今天,有個師弟問我 師兄,空指標和void 型別指標是怎樣的?當時,我大概的說法是 1 空指標是沒有指向的指標,將暫時用不到的指標定義成空指標,能防止誤用。2 而void 型別的指標是有指向的指標,但它的指向的資料的型別暫時不確定,所以先弄成void 型別,後期一般要強制轉換的。回來後,發現這種說法...

空指標和void 指標

空指標不指向任何物件,在試圖使用乙個指標之前可以檢查它是否為空。以下列出幾個生成空指標的方法 int p1 nullptr int p2 0 int p3 null 得到空指標最直接的辦法就是用字面值nullptr來初始化指標,這是c 11新標準引入的一種方法。nullptr是一種特殊型別的字面值,...