C++ 學習之函數傳參2:vector和數組傳參

前面一篇博客講到了在函數的傳參中數組是不能依靠複製傳遞的,而vector是可以複製的,但是由於vector中通常會含有很多元素,爲了避免大量的複製,可以將容器實參以引用的方式避免複製。下面主要講講在實際當中,對數組和容器的傳參的習慣手法。

 

1.數組傳參

1)使用指針傳參(數組除了不能夠具有直接複製的特性,還有一個特性,就是數組名通常情況下會自動轉化爲指向其第一個元素的指針)

具體形式有

void   size_array( int *);

void   size_array( int array[]);

void   size_array( int array[size]);

這三種形式是等價的,形參類型其實都是int *,其中第三種方式比較令人費解,主要是使用了數組長度,但在C++中,編譯器會忽略數組形參的長度,值對類型匹配進行檢測。

2)使用引用傳遞數組

此情況下,數組的長度和類型都會被編譯器檢測。形參的長度和實參的必須完全一致。

注意它的格式是:

int size_array(int (&arr)[10] ) {..................};

int array[10];

int a = size_array(array );

函數size_array中的的長度10一定要和實參的長度一致。

2.容器傳參 

容器傳參通常採用傳遞指向要處理元素的迭代器來傳參。

個人覺得在處理數組和容器的傳參問題上,主要還是使用指針或者迭代器比較方便。

發佈了27 篇原創文章 · 獲贊 7 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章