2 回答

TA貢獻(xiàn)1880條經(jīng)驗 獲得超4個贊
void 被翻譯為"無類型",相應(yīng)的void * 為"無類型指針"。常用在程序編寫中對定義函數(shù)的參數(shù)類型、返回值、函數(shù)中指針類型進(jìn)行聲明。
void 的作用
1.對函數(shù)返回的限定,這種情況我們比較常見。
2.對函數(shù)參數(shù)的限定,這種情況也是比較常見的。
一般我們常見的就是這兩種情況:
(1)當(dāng)函數(shù)不需要返回值值時,必須使用void限定,這就是我們所說的第一種情況。例如:void func(int a,char *b)。
(2)0當(dāng)函數(shù)不允許接受參數(shù)時,必須使用void限定,這就是我們所說的第二種情況。例如:int func(void)。
擴(kuò)展資料:
2011年10月12日,C語言之父丹尼斯·里奇辭世,在眾多的國際互動論壇上,計算機(jī)愛好者們以特有的方式紀(jì)念這位編程語言的重要奠基人。許多網(wǎng)友的發(fā)帖中沒有片言只字,僅僅留下一個分號“;”。
在日益紛繁復(fù)雜的程序設(shè)計語言王國中,C語言因其簡潔、有效、通用的特性而始終占據(jù)一席之地。被譽(yù)為“C語言之父”,同時也是操作系統(tǒng)Unix之父的C語言發(fā)明人之一——丹尼斯·里奇10月9日以70歲之齡辭世。
盡管通過Unix拿獎拿到手軟,但令里奇引起最大關(guān)注和反響的則是C語言的問世。1999年,里奇和湯普遜為發(fā)展C語言和Unix操作系統(tǒng)一起獲得了美國國家技術(shù)獎?wù)隆?/p>

TA貢獻(xiàn)1856條經(jīng)驗 獲得超5個贊
void真正發(fā)揮的作用在于: (1) 對函數(shù)返回的限定; (2) 對函數(shù)參數(shù)的限定。
1、void的含義:
void的字面意思是“無類型”,void *則為“無類型指針”,void *可以指向任何類型的數(shù)據(jù)。
void幾乎只有“注釋”和限制程序的作用,因為從來沒有人會定義一個void變量,讓我們試著來定義:
void a;
這行語句編譯時會出錯,提示“illegal use of type 'void'”。不過,即使void a的編譯不會出錯,它也沒有任何實際意義。
2、void的使用規(guī)則:
規(guī)則一:如果函數(shù)沒有返回值,那么應(yīng)聲明為void類型
在C語言中,凡不加返回值類型限定的函數(shù),就會被編譯器作為返回整型值處理。但是許多程序員卻誤以為其為void類型。例如:
add ( int a, int b )
{
return a + b;
}
int main(int argc, char* argv[])
{
printf ( "2 + 3 = %d", add ( 2, 3) );
}
程序運行的結(jié)果為輸出:2 + 3 = 5,這說明不加返回值說明的函數(shù)的確為int函數(shù)。
規(guī)則二:如果函數(shù)無參數(shù),那么應(yīng)聲明其參數(shù)為void。
在C++語言中聲明一個這樣的函數(shù):
int function(void)
{
return 1;
}
則進(jìn)行下面的調(diào)用是不合法的:
function(2);
因為在C++中,函數(shù)參數(shù)為void的意思是這個函數(shù)不接受任何參數(shù)。在Turbo C 2.0中編譯:
#include "stdio.h"
fun()
{
return 1;
}
main()
{
printf("%d",fun(2));
getchar();
}
編譯正確且輸出1,這說明,在C語言中,可以給無參數(shù)的函數(shù)傳送任意類型的參數(shù),但是在C++編譯器中編譯同樣的代碼則會出錯。在C++中,不能向無參數(shù)的函數(shù)傳送任何參數(shù),出錯提示“'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;}
其中第一個int是返回值 就是別的函數(shù)調(diào)用此函數(shù)時這個函數(shù)給他的一個值。
如果調(diào)用時不需要返回值,則函數(shù)寫為
void sum(int a,int b){....} 此時函數(shù)沒有返回值
如果不需要參數(shù) 則int sum(void){...}
此時void的意義為空,就是沒有參數(shù)的意思
如果都不要 則為void sum(void);
擴(kuò)展資料:
void不能代表一個真實的變量。下面代碼都企圖讓void代表一個真實的變量,因此都是錯誤的代碼:
void a; //錯誤
function(void a); //錯誤
void體現(xiàn)了一種抽象,這個世界上的變量都是“有類型”。
void的出現(xiàn)只是為了一種抽象的需要,如果你正確地理解了面向?qū)ο笾小俺橄蠡悺钡母拍睿埠苋菀桌斫鈜oid數(shù)據(jù)類型。正如不能給抽象基類定義一個實例,我們也不能定義一個void(讓我們類比的稱void為“抽象數(shù)據(jù)類型”)變量。
添加回答
舉報