是由你定義函數(shù)時(shí)所定義的函數(shù)的類型決定的。

吳興網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),吳興網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為吳興成百上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的吳興做網(wǎng)站的公司定做!
也就是說(shuō)函數(shù)是什么類型,返回值就是什么類型。
比如:
函數(shù)定義? int fun(int a,char b)。
返回值就是整型。
函數(shù)定義? int *fun(int a)。
返回值就是基類型為整型的指針。
函數(shù)定義? void fun(int a)。
無(wú)返回值。
簡(jiǎn)介
在調(diào)用函數(shù)時(shí),如果需要從被調(diào)函數(shù)返回一個(gè)值供主調(diào)函數(shù)使用,那么返回值類型必須定義成非 void 型。此時(shí)被調(diào)函數(shù)中必須包含 return 語(yǔ)句,而且 return 后面必須要有返回值,否則就是語(yǔ)法錯(cuò)誤。
一個(gè)函數(shù)中可以有多個(gè) return 語(yǔ)句,但并不是所有的 return 語(yǔ)句都起作用。執(zhí)行到哪個(gè) return 語(yǔ)句,就是哪個(gè) return 語(yǔ)句起作用,該 return 語(yǔ)句后的其他語(yǔ)句都不會(huì)執(zhí)行。
沒(méi)有這個(gè)說(shuō)法。主函數(shù)需要函數(shù)返回值,函數(shù)才需有返回值。
函數(shù)不需要返回值時(shí),用void
函數(shù)需要返回值時(shí),函數(shù)類型按返回值的類型確定。
構(gòu)造函數(shù),析構(gòu)函數(shù)沒(méi)有返回值,一般的函數(shù)必須有返回值,如果沒(méi)有返回類型設(shè)置為void, void func(){return;} 函數(shù)的格式必須有返回類型(即返回值)
c語(yǔ)言規(guī)定,函數(shù)返回值的類型是由函數(shù)首部定義的類型決定。函數(shù)返回值應(yīng)與首部定義的類型一致,如若不一致,則自動(dòng)將返回值強(qiáng)制轉(zhuǎn)換為函數(shù)首部定義的類型。沒(méi)有定義類型時(shí)默認(rèn)為int型。
也就是說(shuō)你的函數(shù)是什么類型,返回值就是什么類型。
比如:
函數(shù)定義 int fun(int a,char b)
返回值就是整型
函數(shù)定義 int *fun(int a)
返回值就是基類型為整型的指針
函數(shù)定義 void fun(int a)
無(wú)返回值
擴(kuò)展資料
函數(shù)可以有返回值,只要 return 就可以給出一個(gè),不過(guò)常常不用它,有兩個(gè)原因:
1、C/C++里返回值是復(fù)制出去的,而對(duì)于大的對(duì)象,復(fù)制的代價(jià)很高;
2、有些對(duì)象是不能復(fù)制的,至少編譯器不知道怎么復(fù)制,比如數(shù)組。
于是有了下面這樣的函數(shù):
bool GetObj(ObjType obj);
bool Encode(const char* src, char* dest);
用一個(gè)參數(shù)來(lái)代替返回值,而返回值只是指示函數(shù)執(zhí)行是否成功。
返回一個(gè)大對(duì)象是困難的,但這個(gè)困難存在于 C 程序中,而不是 C++ 程序中。 C 函數(shù)里較少通過(guò)返回一個(gè)指針來(lái)返回對(duì)象,因?yàn)椋?/p>
1、如果指針指向棧變量,毫無(wú)疑問(wèn),要么不用這個(gè)返回值,要么是一個(gè)錯(cuò)誤;
2、如果指針指向堆變量,需要用這個(gè)函數(shù)的程序員會(huì)好好的看文檔且足夠細(xì)心會(huì)調(diào)用 free,要么就是內(nèi)存泄漏;
3、如果指針指向 static 變量,那么用這個(gè)函數(shù)的程序員牢牢記住“下次調(diào)用這個(gè)函數(shù)以后,上次的返回值也會(huì)跟著變”。
在C++里直接返回裸指針的話,情況并不會(huì)有什么起色,不過(guò) C++ 有智能指針的,通常它們指向堆變量,占用的空間和裸指針一樣大。考慮前面第一個(gè)函數(shù),寫(xiě)成:
std::auto_ptrObjType GetObj();
返回值如果不要,作為臨時(shí)變量,會(huì)立即被析構(gòu),返回的對(duì)象被釋放;如果需要,就得賦值給另一個(gè)智能指針。總之不用程序員記得,編譯器會(huì)保證這個(gè)對(duì)象的釋放。
考慮第二個(gè)函數(shù),稍微有一點(diǎn)麻煩,因?yàn)?auto_ptr 是不能用來(lái)持有數(shù)組的,不過(guò),在C++的世界里,std::string 幾乎總是比 char* 好用:
std::auto_ptrstd::string Encode(const char* src);
最后考慮最麻煩的情況:
bool AssembleObjList(ObjType objList[], size_t length);
例如函數(shù)定義為:int
max(int
a,
int
b),這是個(gè)函數(shù)是獲得a,b兩個(gè)整數(shù)值較大的那個(gè),在函數(shù)的前面有個(gè)int值,說(shuō)明這個(gè)函數(shù)返回的是一個(gè)整數(shù)類型,所以他的返回類型為整型,如果a值比較大就會(huì)返回a,這個(gè)a的值被稱為返回值。
#include
stdio.h
int
max(int
a,int
b)
{
int
z;
if(ab)
z=a;
else
z=b;
return(z);
}
void
main()
{
int
a,b,c;
scanf("%d,%d",a,b);
c=max(a,b);
printf("max=%d
\n",c);
}
如:在主函數(shù)中調(diào)用函數(shù)int
max(int
a,int
b),如果我們輸入1,2,則最后顯示2,2為返回值,而函數(shù)int
max(int
a,int
b)中的返回類型為整型。
分享名稱:c語(yǔ)言函數(shù)返回值類型必須 c語(yǔ)言中函數(shù)返回值類型
轉(zhuǎn)載注明:http://www.chinadenli.net/article28/dooedjp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、搜索引擎優(yōu)化、網(wǎng)站導(dǎo)航、營(yíng)銷型網(wǎng)站建設(shè)、外貿(mào)建站、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)