c語言中void的含義
1、void的含義:
推薦:《c語言教程》
void的字面意思是“無類型”,void *則為“無類型指針”,void *可以指向任何類型的數(shù)據(jù)。
void幾乎只有“注釋”和限制程序的作用,因?yàn)閺膩頉]有人會(huì)定義一個(gè)void變量,讓我們試著來定義:
void a;
這行語句編譯時(shí)會(huì)出錯(cuò),提示“illegal use of type 'void'”。不過,即使void a的編譯不會(huì)出錯(cuò),它也沒有任何實(shí)際意義。
2、void的使用規(guī)則:
規(guī)則一:如果函數(shù)沒有返回值,那么應(yīng)聲明為void類型
在C語言中,凡不加返回值類型限定的函數(shù),就會(huì)被編譯器作為返回整型值處理。但是許多程序員卻誤以為其為void類型。例如:
add ( int a, int b ) { return a + b; } int main(int argc, char* argv[]) { printf ( "2 + 3 = %d", add ( 2, 3) ); }
程序運(yùn)行的結(jié)果為輸出:2 + 3 = 5,這說明不加返回值說明的函數(shù)的確為int函數(shù)。
規(guī)則二:如果函數(shù)無參數(shù),那么應(yīng)聲明其參數(shù)為void。
在C++語言中聲明一個(gè)這樣的函數(shù):
int function(void) { return 1; } 則進(jìn)行下面的調(diào)用是不合法的: function(2); 因?yàn)樵贑++中,函數(shù)參數(shù)為void的意思是這個(gè)函數(shù)不接受任何參數(shù)。在Turbo C 2.0中編譯: #include "stdio.h" fun() { return 1; } main() { printf("%d",fun(2)); getchar(); }
編譯正確且輸出1,這說明,在C語言中,可以給無參數(shù)的函數(shù)傳送任意類型的參數(shù),但是在C++編譯器中編譯同樣的代碼則會(huì)出錯(cuò)。在C++中,不能向無參數(shù)的函數(shù)傳送任何參數(shù),出錯(cuò)提示“'fun' : function does not take 1 parameters”。
所以,無論在C還是C++中,若函數(shù)不接受任何參數(shù),一定要指明參數(shù)為void。
3、void具體使用例子:
定義函數(shù)
返回值 函數(shù)名(參數(shù)1,參數(shù)2,參數(shù)3,.......) {內(nèi)容} int sum(int a,int b) { int c; return c;}
其中第一個(gè)int是返回值 就是別的函數(shù)調(diào)用此函數(shù)時(shí)這個(gè)函數(shù)給他的一個(gè)值。
如果調(diào)用時(shí)不需要返回值,則函數(shù)寫為
void sum(int a,int b){….} 此時(shí)函數(shù)沒有返回值
如果不需要參數(shù) 則int sum(void){…}
此時(shí)void的意義為空,就是沒有參數(shù)的意思
如果都不要 則為void sum(void);