陣列不能拷貝,所以函式不能返回陣列。但是函式可以返回陣列指標或者引用。
定義乙個返回陣列的指標或引用比較麻煩,可以這樣簡化:
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 這個陣列了,系統或者任務會主動的修改裡面的資料,導致...