C 之返回陣列指標

2021-10-02 11:35:48 字數 1525 閱讀 2864

陣列不能拷貝,所以函式不能返回陣列。但是函式可以返回陣列指標或者引用。

定義乙個返回陣列的指標或引用比較麻煩,可以這樣簡化:

typedef

int arrt[10]

;// arrt 表示含有10個整數的陣列

using arrt =

int[10]

;// 與上面一句等價

arrt*

func

(int i)

;// 返回乙個指向含有10個整數的陣列的指標

宣告乙個返回陣列指標的函式

如果不使用型別別名,就需要注意陣列的維度,不同的時候意義不同

int arr[10]

;// 很簡單,10 個 int

int*p1[10]

;// 10 個 int*

int(

*p2)[10

]=&arr;

// 乙個 int* p2,指向含有10個整數的陣列

所以函式也是如此,應是如下形式:

type (*function(parameter_list))[dimension]
其中 type 表示元素型別,dimension表示維度大小

如:

int (*func(int i))[10];
簡單示例**可見 返回陣列指標.cc

使用尾置返回型別

尾置返回型別可以用於所有函式定義,但是對複雜的返回型別最有效。如返回乙個指向 大小為10的陣列 的指標

auto func(int i) -> int (*)[10];
示例**見 返回陣列指標.cc

使用 decltype

由於 decltype() 當裡面的型別是陣列時,並不會將其解析為指標,所以加入已有乙個 int a[10],那麼可以這樣寫:

decltype(a)* func(int i);
返回陣列指標.cc
#include

using namespace std;

int(

*max

(int

(&a)[3

],int(

&b)[3]

,int sz))[

3]return

&a;}

// 第二種

/*auto max(int (&a)[3],int (&b)[3],int sz) -> int(*)[3]

return &a;}*/

intmain()

,b=;

int(

*c)[3]

=max

(a,b,3)

;for

(int i =

0;i <3;

++ i)

return0;

}

C 返回陣列指標

陣列不能被拷貝,所以不能作為函式返回值,所以採用函式返回指標或者引用代替 一,宣告乙個返回指標的函式 二,使用尾置返回型別 三,使用decltype 四,示例 返回陣列的引用,並且該引用包含10個string型別 string func 10 func 表示用func函式無需任何實參 func 表示...

返回陣列指標

如果我們想定義乙個返回陣列指標的函式,則陣列的維度必須跟在函式的名字之後,然而函式名字之後的是形參列表,所以形參列表應該在陣列的維度之前。返回陣列指標的函式形式如下所示 type function parameter list dimension 下面這個func函式的宣告沒有使用型別別名 int ...

c語言函式的陣列返回和指標返回

函式內的陣列和指標都是屬於函式棧空間。如果把陣列或指標返回給外部指標,會發生什麼?1先看看第一種,返回陣列 2看看返回指標的情況 include stdio.h char get c int main int argc,char const ar 這個陣列了,系統或者任務會主動的修改裡面的資料,導致...