本文將對void關鍵字的深刻說明,並詳述void及void指針類型的使用方法與技巧,初學者對C/C++語言中的void及void指針類型不甚理解,因此在使用上出現了一些錯誤。。。
1.void的含義
void的字面意思是“無類型”,void類型 *則為“無類型指針”,void *可以指向任何類型的數據。void幾乎只有“注釋”和限制程序的作用,因為從來沒有人會定義一個void變量,讓我們試著來定義:
這行語句編譯時會出錯,提示“illegal use of type 'void'”。不過,即使void a的編譯不會出錯,它也沒有任何實際意義。void真正發揮的作用在於:
1) 對函數返回的限定;
2) 對函數參數的限定。
眾所周知,如果指針p1和p2的類型相同,那麼我們可以直接在p1和p2間互相賦值;如果p1和p2指向不同的數據類型,則必須使用強制類型轉換運算符把賦值運算符右邊的指針類型轉換為左邊指針的類型。
- int function(void)
- {
- return 1;
- }
- 則進行下面的調用是不合法的:
- function(2);
- 因為在C++中,函數參數為void的意思是這個函數不接受任何參數。
- 我們在Turbo C 2.0中編譯:
- #include "stdio.h"
- fun()
- {
- return 1;
- }
- main()
- {
- printf("%d",fun(2));
- getchar();
- }
因此,為了避免混亂,我們在編寫C/C++程序時,對於任何函數都必須一個不漏地指定其類型。如果函數沒有返回值,一定要聲明為void類型。這既是程序良好可讀性的需要,也是編程規范性的要求。
另外,加上void類型聲明後,也可以發揮代碼的“自注釋”作用。代碼的“自注釋”即代碼能自己注釋自己。規則二 如果函數無參數,那麼應聲明其參數為void
在C++語言中聲明一個這樣的函數:
- int function(void)
- {
- return 1;
- }
- 則進行下面的調用是不合法的:
- function(2);
- 因為在C++中,函數參數為void的意思是這個函數不接受任何參數。
- 我們在Turbo C 2.0中編譯:
- #include "stdio.h"
- fun()
- {
- return 1;
- }
- main()
- {
- printf("%d",fun(2));
- getchar();
- }
編譯正確且輸出1,這說明,在C語言中,可以給無參數的函數傳送任意類型的參數,但是在C++編譯器中編譯同樣的代碼則會出錯。在C++中,不能向無參數的函數傳送任何參數,出錯提示“'fun' : function does not take 1 parameters”。所以,無論在C還是C++中,若函數不接受任何參數,一定要指明參數為void。