void指標 void 的用法

2021-09-10 02:09:11 字數 929 閱讀 9200

指標有兩個屬性:指向變數/物件的位址和長度 

但是指標只儲存位址,長度則取決於指標的型別 

編譯器根據指標的型別從指標指向的位址向後定址 

指標型別不同則定址範圍也不同,比如: 

int*從指定位址向後尋找4位元組作為變數的儲存單元 

double*從指定位址向後尋找8位元組作為變數的儲存單元 

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 是沒有任何返回值, 而 void * 是返回任意型別的值的指標.

還是看**吧:

#include

#include

void voidc(int a); 

void* voidcp(int *a);

int main()

void voidc(int a)

void* voidcp(int *a)

結果是:

void指標 void 的用法

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

void指標 void 的用法

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

void指標 void 的用法

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