1. 程式人生 > >C++函式的陣列引數—向函式傳遞陣列

C++函式的陣列引數—向函式傳遞陣列

C++學習之函式的陣列呼叫----

當函式中的某個引數是陣列時,在引數名後加上一對中括號,比如int a[],表示引數a是一個數組。下面我們就來看這樣一個在一堆正數裡面找一個最大數的程式:(

(
	#include "iostream.h"
	int max(int a[],int size);//size是陣列的大小
	int main()
	{
	   int number[]={2,45,12,6,23,98,13,3};
	   cout <<max(number,sizeof(number)/sizeof(int)) <<endl;//求陣列的長度
	   return 0;
	}
	int max(int a[],int size)
	{
	   int max=0;
	   for (int i=0;i<size;i++)
	   {
	      if (a[i]>max)
	      max=a[i];
	   }
	   return max;
	}

執行結果:

98

我們發現,在函式裡使用陣列也是比較方便的。但大家有沒有考慮過一個問題,我們為什麼不在函式裡面sizeof算出陣列的大小,而非要在函式外面算好了,再作為引數傳遞給函式呢?在這裡,我們就有必要講一下陣列作為引數傳遞給函式的原理了。

*我們以前說過,引數的傳遞是將實參的值賦給形參。然而對於陣列來說卻是一個例外,因為陣列的資料太多了,將其一一賦值既麻煩又浪費空間,所以數組作為引數傳遞給函式的只是陣列首元素的地址,函式在需要用到後面元素時再按照這個地址和陣列下標去查詢。也就是說後面的元素根本沒到函式裡來,所以在函式裡求不出陣列的大小也就不足為奇了。

在函式中將記憶體中的資料作了操作,所以影響到了實參。

可以說陣列當作為函式形參的時候,可以當做指標看待