Передача аргументом массива в С++
В качестве аргументов функций могут указываться массивы. Учитывая, что имя массива является ссылкой на первый его элемент, существует некоторая свобода в способе передачи массива аргументом функции. Хотя, если смотреть в корень проблемы, то все способы базируются на одном механизме. Тем не менее, рассмотрим все варианты. Первый и наиболее прямолинейный показан в следующем листинге. В программе объявляется функция show{), аргументом которой указан целочисленным массив из пяти элементов. Прототип функции имеет вид void show(int n[5]). Передаваемый массив указывается вместе с размером. В результате выполнения программы в столбик выводятся значения элементов массива/
В следующем коде выполнятеся передача аргументом массива и при этом размер не указан. Фактически ничего не изменится.
Причина в том, что при передаче массива аргументом и в том, и в другом случае на самом деле передается ссылка на первый элемент массива. Поэтому особого значения не имеет, указан размер массива или нет - в С++ все равно проверки на предмет выхода за пределы массива нет. Поэтому разумнее, передавать массив в виде указателя, благо таковым является имя массива. Пример соответствующего кода приведен в следующем листинге.
#includeusing namespace std; //При объявлении массива явно указан размер: void show(int n[5]){ for(int i=0; i < 5; i++) cout<<"n[" << i << "]=" << n[i] << endl; } int main(){ int n[5]={1,2,3,4,5}; show(n); return 0; }
#includeusing namespace std; //При объявлении массива размер не указан: void show(int n[]){ for(int i=0;i<5;i++) cout << "n[" << i << "]=" << n[i] << endl; } int main(){ int n[5]={1,2,3,4,5}; show(n); return 0; }
#includeusing namespace std; //Аргументом указано имя массива и размер: void show(int *n,int m){ for(int i=0; i < m; i++) cout << "n[" << i << "]=" << n[i] << endl; } int main(){ int n[5]={1,2,3,4,5}; show(n,5); show(n,3); return 0; }