java statement 返回类型,6.3 返回类型和返回语句 | Return type Return statement
無返回值函數
對于返回類型是void的函數,return后不跟表達式。最后的 return; 可以沒有而讓程序隱式執行。在void函數中的return語句還有提前使函數退出的作用而不進行接下來的計算,如定義一個swap函數在二者相同時不繼續運算直接退出:
void swap(int& v1, int& v2){
if (v1==v2) return;
int tmp = v2;
v2 = v1;
v1 = tmp;
//可以不顯式添加return
}
有返回值函數
函數不是void類型,則每個void語句都必須返回一個值,且這個值必須與函數返回類型相同或可以隱式轉換為函數的返回類型。同樣,程序執行到return語句后會提前退出:
int foo(int a){
if (a) return 0;
return 1;
}
int main(){
int b = 2, c = 0;
cout<
}
值如何被返回
返回的方式和初始化一個變量或形參完全一致:返回的值用于初始化調用點的一個臨時量,此臨時量即函數調用結果。
不要返回局部對象的引用或指針
否則當結束運行,函數的占用空間被完全釋放,引用或指針不再有效。
返回類類型的函數和調用運算符
調用運算符的優先級和點運算符或箭頭運算符相同。因此可以使用函數調用的結果直接訪問結果對象的成員:
string a(string s1, string s2){return s1+s2;}
int main(){
string sa = "a", sb = "b";
cout<
}
引用返回左值
調用一個返回引用的函數,得到的結果是一個左值。因此可以為返回類型是非常量引用的函數的結果賦值:
//注意函數返回類型為char!
char get_var(string& str, string::size_type index){
return str[index];
}
int main(){
s = "hello";
get_val(s, 0) = 'H';
cout<
}
列表初始化返回值
可以返回花括號包圍的值列表給一個臨時量。此列表也用來對表示函數返回值的臨時量進行初始化。若是空,則默認初始化。否則由函數返回類型決定返回值。
就如果返回的是內置類型,則花括號列表只允許最多一個值且該值所占空間不應大于目標類型的空間。若是類類型則由類本身定義,如vector的列表初始化。
主函數main的返回值
允許main函數沒有return語句而直接結束,編譯器會隱式地在最后插入 return 0。
遞歸
無論直接或間接,一個函數調用了自身則稱為遞歸函數。如下列階乘函數:
int factorial(int val){
if (val) {
cout<
}
//注意val-1不能是val--否則死循環
//若是--val不會報錯,但會多減一次,使最終返回值為 0
return 1;
}
返回數組指針
數組不能拷貝,所以不能被返回。
返回數組的指針可用類型別名簡化:
typedef int arrT[10];
using arrT = int[10];//與上述等價且易懂
arrT* func(int i); //返回一個指向(含有10個整數的數組的)指針
聲明一個返回數組指針的函數
函數形式如下:
type (*function(parameter_list))[dimension]
func(int i):表示調用func時需要int i作為實參
(*func(int i)):表示可以對調用結果進行解引用操作
(*func(int i))[10]:表示解引用func的調用將得到一個大小10的數組
int (*func(int i))[10]:表示數組中元素是int類型。
尾置返回類型trailing return type
任何函數定義都可以使用尾置返回,對于返回類型復雜的函數較為有效,比如返回類型是數組的指針或者數組的一樣弄。尾置返回類型跟在形參列表后面以 -> 開頭:
auto func(int i) -> int(*)[10]
使用decltype
如果知道函數返回指針指向哪個數組,即可使用decltype聲明返回類型。例如下列函數返回的指針根據參數不同而改變:
int odd[] = {1, 3, 5, 7, 9};
int even[] = {2, 4, 6, 8, 0};
decltype(odd) *arrPtr(int i){
return (i%2) ? &odd : &even;
}
int main(){
int i = 3;
cout<
}
attrPtr使用decltype表示其返回類型是個指針,并且該指針所指的對象與odd的類型一致。因為odd是數組,arrPtr返回一個指向含有5個整數數組的指針。注意decltype的結果是個數組,要想表示arrPtr返回指針還必須在函數聲明時加一個*符號。
總結
以上是生活随笔為你收集整理的java statement 返回类型,6.3 返回类型和返回语句 | Return type Return statement的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《赠顾墨曹诗》是哪个时期的作品?
- 下一篇: 在c语言中a 这条语句的作用,C语言复习