void不是「空」的意思,是「萬能」的意思。
void與普通變數的結合
void修飾普通變數 也就是這個變數的類型是任何類型,比如void a; a=10;不過幾乎沒有人這樣做,這樣寫在有些編譯器中也是出錯的。如下圖所示:

因此我們在定義變數時都會給一個確定的類型。同時系統會給這個變數分配相應的內存空間,如果定義為void類型變數,系統就不知道要給這個變數分配多大的內存空間。因此這樣寫是錯的。同樣,void*修飾變數也是類似。
void與函數的結合
void在自己定義函數中作為參數和返回值的使用。如果函數沒有返回值,那麼可以將這個函數的返回設置為void類型。比如
void fun(int i) { printf("i = %d n", i) }
如果函數有返回值,但是在定義的時候沒有返回類型,那麼默認的返回值的類型為整型。如果函數沒有參數應在函數名後的小括弧內寫上void,常見的int main(void)或者比如
int fun(void) { int i = 10; return i; }
void *指針與函數的結合
void *修飾指針變數 表示這個變數可以指向任何類型的指針。
如果在實際的開發中,如果我們所需要的參數或者是返回值為任意一種指針類型,那麼可以將參數或者返回值寫成void *形式。比如我們常用的memcpy memset函數都是這樣做的。這些內存操作函數只管所需要的空間大小,不管申請後這些空間是用來存儲int類型還是char類型亦或是其他類型額數據。這樣也就保證了這些內存函數使用的範圍更廣。這裡的參數個返回值void*類型就表示可以是任何需要的類型。
void *memcpy(void *dest, const void *src, size_t n);
void *memset(void *s, int c, size_t n);
以上就是所總結的void的用法,這些都是必須要掌握的,上機實戰,理解才是王道。
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/281925.html