原文:
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是一種特殊型別的字面值,...