-
1 # 用戶4410890378025883
-
2 # 的1路two額
return後接一個值。在調用這個函數的函數裡面,調用它的時候希望獲得一個值,如果不希望獲得這個值的時候,用void聲明就好。
如果需要,比如說需要得到一個整形值就聲明int func()在調用它的比如main裡面func()的作用就可以相當於一個int型常數比如外面定義了int max(int a,int b){return a>b?a:b;}主函數裡面是main(){int A;A=max(1,2);}這時候就是通過max計算 1>2 則return 一個1 ,1<2 則return一個2。很明顯1<2 所以這裡max(1,2)就會return 一個 2這時候主函數裡的max(1,2)就相當於一個常數 2A=max(1,2)的作用就相當於A=2這個意思。
-
3 # 髒話比謊話乾淨558
c語言規定,函數返回值的類型是由函數首部定義的類型決定。函數返回值應與首部定義的類型一致,如若不一致,則自動將返回值強制轉換為函數首部定義的類型。沒有定義類型時默認為int型。
也就是說你的函數是什麼類型,返回值就是什麼類型。
比如:
函數定義 int fun(int a,char b)
返回值就是整型
函數定義 int *fun(int a)
返回值就是基類型為整型的指針
函數定義 void fun(int a)
無返回值
擴展資料
函數可以有返回值,只要 return 就可以給出一個,不過常常不用它,有兩個原因:
1、C/C++裡返回值是複製出去的,而對於大的對象,複製的代價很高;
2、有些對象是不能複製的,至少編譯器不知道怎麼複製,比如數組。
于是有了下面這樣的函數:
bool GetObj(ObjType& obj);
bool Enwxxxcode-style(const char* src, char* dest);
用一個參數來代替返回值,而返回值只是指示函數執行是否成功。
返回一個大對象是困難的,但這個困難存在於 C 程序中,而不是 C++ 程序中。 C 函數裡較少通過返回一個指針來返回對象,因為:
1、如果指針指向棧變量,毫無疑問,要麼不用這個返回值,要麼是一個錯誤;
2、如果指針指向堆變量,需要用這個函數的程序員會好好的看文檔且足夠細心會調用 free,要麼就是內存洩漏;
3、如果指針指向 static 變量,那麼用這個函數的程序員牢牢記住“下次調用這個函數以後,上次的返回值也會跟著變”。
在C++裡直接返回裸指針的話,情況並不會有什麼起色,不過 C++ 有智能指針的,通常它們指向堆變量,占用的空間和裸指針一樣大。考慮前面第一個函數,寫成:
std::auto_ptr
GetObj();
返回值如果不要,作為臨時變量,會立即被析構,返回的對象被釋放;如果需要,就得賦值給另一個智能指針。總之不用程序員記得,編譯器會保證這個對象的釋放。
考慮第二個函數,稍微有一點麻煩,因為 auto_ptr 是不能用來持有數組的,不過,在C++的世界裡,std::string 幾乎總是比 char* 好用:
std::auto_ptr<std::string> Enwxxxcode-style(const char* src);
最後考慮最麻煩的情況:
bool AssembleObjList(ObjType objList[], size_t length
回覆列表
所謂函數返回值是一個函數在運算結束以後向調用它的母函數或者系統反饋一個值,這個值可以是各種變量類型.舉個簡單的例子:int add(int a,int b){ return (a+b);}int main(){ int res; res=add(3,4); printf("%d",res); return 0;}在主函數main中調用子函數add,並傳遞參數3和4過去,add經過運算後得到值7,通過return語句將得到的值返回給調用它的main函數供其使用,而在main中,返回值被用於給res賦值。函數返回值就可以理解為解決一個問題以後得到的結論,把這個結論交給別人,就像寫在書上成為一個定理,來讓別人使用。