В С++ существует несколько возможностей передачи массива в функцию.
- В С++ массивы можно инициализировать следующим образом:
int arr[] = {p1, p2, p3, ...}; // длина массива определяется после инициализации
Как следствие, его можно передать в функцию таким же способом:
void func(int arr[]){ //your code }
- Еще один вариант — передать массив по указателю. Например:
void func(int* arr){ //your code } int arr[5] = {1, 2, 3, 4, 5};
Мы привыкли обращаться к элементам массива по индексам, но попробуйте скомпилировать и запустить следующие строки:
int main(){ int arr[5] = {1, 2, 3, 4, 5}; cout << arr << endl; //в данном случае мы увидим адрес начала массива return 0; //его мы и передаем в массив }
При использовании любого из данных вариантов, перед нами становится вопрос определения длины полученного массива. Длину можно передавать через второй параметр в функцию.
Например:
void func(int* arr, int length){
//your code
}
Но в ряде задач длина входного массива может быть неизвестной. На этот случай тоже есть решение, мы можем анализировать данные, которые поступили в функцию по указателю, например:
int len(int* arr){
int count = 0;
while(*x++ < ?) count++;
return count;
}
Крайне важно понять критерий по которому мы будем оценивать содержимое. В противном случае, можно получить не совсем то, что ожидалось.
Читать полностью »