void指標詳解

2021-07-23 21:29:34 字數 869 閱讀 5905

void指標的理解和使用都是比較複雜的,尤其與其他形式定義結合時,就顯得更為複雜了。下面就綜合網上一些資料,介紹一下void的用法。

1.void指標是一種特別的指標

void *vp

//說它特別是因為它沒有型別

//或者說這個型別不能判斷出指向物件的長度

2.任何指標都可以賦值給void指標

type *p;

vp=p;

//不需轉換

//只獲得變數/物件位址而不獲得大小

3.void指標賦值給其他型別的指標時都要進行轉換

type *p=(type*)vp;

//轉換型別也就是獲得指向變數/物件大小

**4.void指標不能復引用

*vp//錯誤

因為void指標只知道,指向變數/物件的起始位址

而不知道指向變數/物件的大小(佔幾個位元組)所以無法正確引用

5.void指標不能參與指標運算,除非進行轉換

(type*)vp++;

//vp==vp+sizeof(type)

因此,void*的作用大致如下:

1. 傳參:通用型別

可以作為函式模板,鍊錶等引數的通用引數。在使用時,只需要強制型別轉換就可以。

2.強制型別轉換

有時候由於過載等的干擾,導致需要轉換成void *,來進行取位址。

例如,(void *)obj.member,就可以取到member的位址;直接&(obj.member)取到的實際上是obj的開始位址。

3.指向0的位址

(void *)0,指向全是0的位址,相當於null。

非void型別顯式轉換為void型別表示式,用於避免一些**靜態檢查工具的警告。(這個還不是很懂。。求高人講解)

void及void指標詳解

1.概述 許多初學者對c c 語言中的void及void指標型別不甚理解,因此在使用上出現了一些錯誤。本文將對void關鍵字的深刻含義進行解說,並詳述void及void指標型別的使用方法與技巧。2.void的含義 void的字面意思是 無型別 void 則為 無型別指標 void 可以指向任何型別的...

void及void指標型別

1.概述 許多初學者對c c 語言中的void及void指標型別不甚理解,因此在使用上出現了一些錯誤。本文將對void關鍵字的深刻含義進行解說,並 詳述void及void指標型別的使用方法與技巧。2.void的含義 void的字面意思是 無型別 void 則為 無型別指標 void 可以指向任何型別...

void指標 void 的用法

指標有兩個屬性 指向變數 物件的位址和長度 但是指標只儲存位址,長度則取決於指標的型別 編譯器根據指標的型別從指標指向的位址向後定址 指標型別不同則定址範圍也不同,比如 int 從指定位址向後尋找4位元組作為變數的儲存單元 double 從指定位址向後尋找8位元組作為變數的儲存單元 1.void指標...