1.通過型別別名
typedef
int arrt[10]
;//arrt是乙個型別別名,它表示的型別是乙個含有10個整數的陣列
using arrt=
int[10]
;//同上
arrt*
func
(int);
//返回乙個指向含有10個整數的陣列的指標
arrt &
func
(inti)
;//返回乙個指向含有10個整數的陣列的引用
2.不使用型別別名直接返回
如果我們想定義乙個返回陣列指標或引用的函式,則陣列的維度必須跟在函式名字之後。然而,函式的引數列表也跟在函式名之後且在陣列維度之前。
//函式形式如下
type(*function(paramter_list))[dimension];
type(&function(paramter_list))[dimension];
//舉例
int(*func(int i))[10];
//由內而外理解其含義
func(int i)//表示func函式需要乙個型別為int的形參
(*func(int i))//表示我們可以對函式呼叫的結果執行解引用操作
(*func(int i))[10]//表示我們解引用操作的結果是乙個大小是10的陣列
//引用以此類推
3.使用尾置返回型別
任何函式的定義都可以使用尾置返回,但這種形式對於複雜的函式最有效,比如返回型別是陣列的指標或引用。尾置返回型別跟在形參列表後面並以乙個->符號開頭
//func接受乙個int型別的實參,返回乙個指標,該指標指向乙個大小為10的陣列
auto
func
(int i)
->
int(*)
[10];
//返回乙個引用
auto
func
(int i)
->
int(&)
[10];
4.使用decltype
如果我們指導函式返回的指標指向的陣列大小和型別,就可以使用decltype關鍵字宣告返回型別
int odd=
;int even=
;decltype
(odd)
*arrptr
(int i)
decltype
(odd)
&arrptr
(int i)
c primer 學習(四) 函式
之所以跳過了原書第五章的 語句 是因為這個東西實在沒啥意思,只要學過一點c,或者任何程式語言的應該都會,要說知識只有一點,就是後邊的異常處理,不過這個在後邊章節也要詳細講,只要記住乙個try catch error 就可以了。但是第五章的題都是不錯的,建議大家乙個個做一下,其實感覺c primer的...
C Primer學習筆記(7)函式
1 函式呼叫做了兩件事情,用對應的實參初始化函式的形參,並將控制權轉交給被掉函式 主調函式的執行被掛起,被掉函式開始執行。2 函式體是乙個作用域。3 函式不能返回另乙個函式或者內建陣列型別,但是可以返回指向函式的指標或者指向陣列元素的指標。4 c 是一種靜態強型別語言,對於每一次的函式呼叫,編譯器都...
C Primer 學習筆記 函式(二)
include using std cout int compare int x,int p int main include include using namespace std void print1 int a,int n void print2 int beg,int end void p...