c primer學習志函式返回陣列指標或引用

2021-10-05 23:27:10 字數 1394 閱讀 5612

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...