В c++ передавать параметр какой-либо функции вовсе необязательно, если этот параметр можно рассмотреть как глобальный. Но вот что касается каких либо локальных переменных, тут дело обстоит иначе: нужно передавать.
С одномерным массивом все просто. Рассмотрим случай передачи локального одномерного массива
mass, который мы инициализируем в функции
main() и передаем функции
print(), которая нам выведет содержимое массива:
int print(int massive[]) {
for (int i=0; i<5; i++) printf(" %d", massive[i]);
return 0;
}
int main(){
int mass[5]={0, 5, 9, 12, 8};
print(mass);
return 0;
}
обратите внимание, что в функции
print мы задаем имя формального параметра как
massive, хотя никто не запрещает нам использовать и
mass. Я обращаю внимание, что хоть и называем параметр по другому, но если бы наша функция и меняла что-то в массиве, то эти изменения совершались не над копией массива, а над ним самим.
Бывают случаи, когда приходится работать с двумерными массивами. Допустим, вам необходимо передать двумерный массив какой-то хитрой функции. При этом учтем, что наш массив не глобальный, иначе его можно и не указывать в формальных параметрах.
Пусть у нас в функции определяется какой-то локальный массив m2d[3][5]. В таком представлении, грубо говоря, мы можем видеть этот массив в нашем богатом воображении как таблицу, у которой 3 строки и 5 столбцов. Итак вот каким образом мы передаем этот массив функции:
int foo( int (*mass)[5]) {
//some code
....
}
int main(){
//определяем и сразу инициализируем массив
int m2d[3][5] = {
(0, 1, 5, 7, 4),
(5, 12, 8, 0, 7),
(1, 1, 1, 59, 7)
};
foo(m2d);
return 0;
}
вот собственно и все. однако не злоупотребляйте многомерными массивами - это может привести к сжиранию памяти, т.к. в таких случаях ее очень сложно отслеживать.