返回值是函數(shù)的計(jì)算結(jié)果,比如用函數(shù)計(jì)算1+1返回值就是2;
目前成都創(chuàng)新互聯(lián)公司已為近千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站托管維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、平遙網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
另外返回值并不一定的我們想要的結(jié)果,比如1+1如果返回3了,那就是函數(shù)代碼有錯(cuò)誤。
如果一個(gè)函數(shù)沒有返回值,一般情況下是需要加入return語(yǔ)句的,但是如果你需要在某些情況下不完全將函數(shù)執(zhí)行完畢,就可以加上return語(yǔ)句來提前返回,這時(shí)候加上“return;”return是C語(yǔ)言中的一個(gè)關(guān)鍵字,意為返回。
如果被調(diào)用的函數(shù)中沒有return語(yǔ)句,并不帶回一個(gè)確定的,用戶希望得到的函數(shù)值,但實(shí)際上,函數(shù)并不是不帶回值,而只是不帶回有用的值,帶回的是一個(gè)不確定的值。
為了明確表示“不帶回值”。可以用“void”定義“無類型”(或稱“空類型”)。這樣系統(tǒng)就保證不使函數(shù)帶回任何值,即禁止在調(diào)用函數(shù)中使用被調(diào)用函數(shù)的返回值。
為使程序減少出錯(cuò),保證正確調(diào)用,凡不要求帶回函數(shù)值的函數(shù),一般定義為void類型。
遞歸函數(shù)myPower的定義有邏輯錯(cuò)誤,改成:
double myPower(int a,int b)
{
if(0==b) return 1;
return a*myPower(a,b-1);
}
如果改成這樣,會(huì)更高效:
double myPower(int a,int b)
{
if(0==b) return 1;
if(1==b) return a;
return myPower(a,b%2)*myPower(a*a,b/2);
}
例子1
#include stdio.h
double myPower(int a,int b)
{
if(0==b) return 1;
return a*myPower(a,b-1);
}
int main()
{
int a=2,b;
for(b=0;b11;b++)
printf("%lf\n",myPower(a,b));
return 0;
}
例子2
#include stdio.h
double myPower(int a,int b)
{
if(0==b) return 1;
if(1==b) return a;
return myPower(a,b%2)*myPower(a*a,b/2);
}
int main()
{
int a=3,b;
for(b=0;b11;b++)
printf("%lf\n",myPower(a,b));
return 0;
}
C語(yǔ)言中,如果要函數(shù)不返回值,則應(yīng)該吧函數(shù)的類型定義為“void”。
在將函數(shù)定義為void類型的情況下在主調(diào)函數(shù)中調(diào)用該函數(shù),該函數(shù)調(diào)用表達(dá)式不能被用作子表達(dá)式給其他變量賦值。
void的字面意思是“無類型”,void *則為“無類型指針”,void *可以指向任何類型的數(shù)據(jù)。
擴(kuò)展資料:
void類型指針要注意規(guī)則:
1、void 指針是一種特殊的指針,表示為“無類型指針”,在 ANSI C 中使用它來代替“char*”作為通用指針的類型。由于 void 指針沒有特定的類型,因此它可以指向任何類型的數(shù)據(jù)。
2、void*類型只有地址信息沒有類型信息,所以不能計(jì)算偏移。
3、要將void指針賦值給其他類型的指針,必須進(jìn)行強(qiáng)制類型轉(zhuǎn)換。
4、在編程中,如果函數(shù)的參數(shù)可以是任意類型指針,那么應(yīng)該使用 void 指針作為函數(shù)的形參,這樣函數(shù)就可以接受任意數(shù)據(jù)類型的指針作為參數(shù)。
void使用注意:
1、如果函數(shù)沒有返回值,那么應(yīng)聲明為void類型,在C語(yǔ)言中,凡不加返回值類型限定的函數(shù),就會(huì)被編譯器作為返回整型值處理。但是許多程序員卻誤以為其為void類型。
2、如果函數(shù)無參數(shù),那么應(yīng)聲明其參數(shù)為void。
3、void不能代表一個(gè)真實(shí)的變量
參考資料來源:百度百科-void
無返回值就是函數(shù)只執(zhí)行數(shù)據(jù)處理,不返回值。函數(shù)定義時(shí)一般用void關(guān)鍵字表示無返回值。
如調(diào)用string類庫(kù)中的int
i
=
strcmp("abc",
"abc")函數(shù)判斷兩個(gè)參數(shù)是不是相等,兩個(gè)都"abc"
則i
=
0,這是有返回值的
很正常啊,沒有返回值,就是不需要返回值。
比如:定義一個(gè)函數(shù),在函數(shù)中打印信息到屏幕上。
void?displayMessage(char?*msg)?{
#ifdef?NEED_DEBUG
printf("%s\n",?msg);
#endif
}
很顯然,調(diào)用這個(gè)函數(shù),我不需要知道信息是不是已經(jīng)打印到屏幕上了。(只有調(diào)試程序,才需要顯示信息)
有很多類似的場(chǎng)景,比如:某個(gè)程序,根據(jù)給定的參數(shù),在屏幕上繪制完成一個(gè)圖像,而調(diào)用者不關(guān)心圖像是不是繪得正確,因?yàn)檎_與否不影響程序的繼續(xù)執(zhí)行。