در این پست می خواهیم چند روش برای فرستادن یک آرایه به تابع را بررسی کنیم. اولین چیزی که باید در این مورد بدانید این است که آرایه ها به صورت "ارجاع" به تابع فرستاده می شوند، به این معنی که هر تغییری که تابع در آرایه ایجاد کند در برنامه ی اصلی (تابع Main ) نیز بر روی آرایه اعمال می شود.
اگر متغیری به صورت "مقدار" به تابع ارسال شود، محتوای آن بعد از خروج از تابع تغییر نخواهد کرد.
اگر متغیری به صورت "ارجاع" (یا به صورت "آدرس") به تابع ارسال شود محتوای آن توسط تابع میتواند به طور دائم تغییر داده شود.
آرایه ی یک بعدی: فرض می کنیم که آرایه ای را در بدنه ی اصلی برنامه به نام A با 20 خانه به صورت زیر تعریف کرده ایم :

int A [20];

و می خواهیم آن را به تابعی به نام Function ارسال کنیم. ابتدا تابع خود را به صورت زیر اعلان و تکمیل می کنیم :

void Function (int Name [ ], int Size_of_Array) {
دستورات تابع:
{

همان گونه که می بینید از دو آرگومان تابع، ارگومان اولی که Name نام دارد و با علامت براکت مشخص شده است نشانگر یک آرایه است و تعداد خانه های این آرایه هم به وسیله ی ارگومان دوم که Size_of_Array نامگذاری شده است به تابع ارسال می شود. نام این دو آرگومان کاملا اختیاری است و نیازی نیست که با نام آرایه ای که در بالا تعریف کردیک یکسان باشد. حالا در بدنه اصلی برنامه، تابع را استفاده می کنیم و آرایه را به تابع می فرستیم.

Function (a , 20);

در فرمان بالا ابتدا نام تابع آورده شده است و در داخل پرانتز ابتدا نام آرایه ای که می خواهیم به تابع فرستاده شود و سپس اندازه ی این آرایه آورده شده است. همیشه دقت داشته باشید که یک تابع به تعداد آرگومان هایی که برای ان تعریف کرده اید، متغییر می پذیرد و حتی نوع آنها نیز باید دقیقا همانند نوع تعریف شده باشند. در نتیجه تمام فرمان های زیر اشتباه هستند.

Function (a , 20, 20);
Function (20 , a);
Function (a[20]);.

یک آرایه چند بعدی : فرض می کنیم که آرایه ای دو بعدی 5 در 10 به صورت زیر داریم:

int A [5][10];

تابعی که بتواند این آرایه را بپذیرد باید به صورت زیر باشد :

void Function (int name [ ] [10] , Size1 , Size2)
{
دستورات تابع :
}

همانگونه که در اعلان تابع می بینیم، این تابع سه آرگومان دارد که به ترتیب نام آرایه ، اندازه ی بعد اول و اندازه ی بعد دوم هستند. برای ارگومان اول نام Name با دو علامت براکت آورده شده است که نشان می دهد این تابع یک آرایه دو بعدی را می پذیرد. نکته ای که این جا اهمیت دارد این است که به جز بعد اول، تابع باید حتما بداند که اندازه ی بعد های دیگر چند هستند. البته نوشتن اندازه ی بعد اول نیز مانعی ندارد. پس اگر یک آرایه 10 بعدی هم دارید باید به غیر از بعد اول، اندازه ی بعد های دیگر را در اعلان تابع مشخص کنید. در پست های بعدی روش های دیگر ارسال ارایه ها و متغیر ها به توابع را بررسی خواهیم کرد.
حالا که در این پست صحبت از "ارجاع" (Reference) شد بد نیست که توضیحی نیز در باره آن داده شود. هنگامی که یک متغییر را به تابع ارسال می کنید در حقیقت یک کپی از آن ساخته می شود و به تابع ارسال می شود. بنابر این شما هر تغییری که در این کپی ایجاد کنید در متغییر اصلی بی تاثیر خواهد بود. یکی از معایب این روش اتلاف بی دلیل حافظه است (مخصوصا وقتی که برنامه ای که نوشته اید بسیار بزرگ و حجیم باشد). با استفاده از عملگر ارجاع که علامت (&) است می توانید به جای ایجاد یک کپی از متغیر و ارسال آن به تابع، خود متغیر را به تابع ارسال کنید. در زیر اعلان دو تابع به وسیله ی مقدار و ارجاع نشان داده شده است. این تابع یک متغیر صحیح (int) را از برنامه اصلی دریافت می کند و یک مقدار صحیح را برمی گرداند.
به روش مقدار:

int Function (int);

به روش ارجاع:

int Function (int&);