C++에서는 연속적인 메모리 위치에 저장되어 있고 동일한 데이터 유형을 갖는 요소들의 집합을 배열이라고 한다. 배열을 함수로 전달하는 것은 메인 코드를 망치지 않고 배열 요소에 대한 다양한 연산을 실행하기 위해 수행된다.
C++에서 배열은 포인터나 참조를 사용하여 함수에 전달할 수 있다. 배열을 전달하는 다양한 접근 방식을 이해하는 것은 필요에 따라 코드를 작성하는 데 중요할 것이다.
1. C++에서 배열을 함수에 전달하는 방법
C++에서 배열을 함수에 매개 변수로 전달하는 방법은 다음과 같다.
① 크기가 지정된 배열
이 방법에서 우리는 배열의 종류, 이름, 크기로 선언하는 것과 같은 방식으로 배열을 전달한다. 우리가 보는 것처럼 배열의 크기는 다른 매개변수로 전달해야 한다. 왜냐하면 마지막에 배열이 함수에서 포인터로 취급되기 때문이다.
구문:
return_type function_name (datatype array_name [size], int size)
예시:
// C++ program to demonstrate the passing of array as sized
// array.
#include <iostream>
using namespace std;
// function to update array elements
void printarray(int a[10])
{
for (int i = 0; i < 5; i++)
a[i] = a[i] + 5;
}
int main()
{
// array declaration
int a[5] = { 1, 2, 3, 4, 5 };
printarray(a); // Passing array to function
// printing array elements
for (int i = 0; i < 5; i++)
cout << a[i] << " ";
return 0;
}
출력:
6 7 8 9 10
② 크기가 지정되지 않은 배열
이 방법은 이전 방법과 비슷하지만 배열의 크기를 지정하지 않는다는 차이점이 있다.
구문:
return_type function_name (data_type array_name[])
예시:
// C++ program to demonstrate the passing of array as
// unsized array.
#include <iostream>
using namespace std;
// function to update array elements
void printarray(int a[],int size)
{
for (int i = 0; i < size; i++)
a[i] = a[i] + 5;
}
int main()
{
// array creation
int a[5] = { 1, 2, 3, 4, 5 };
int n=5;
printarray(a,n); // Passing array to function
// printing array elements
for (int i = 0; i < n; i++)
cout << a[i] << " ";
return 0;
}
출력:
6 7 8 9 10
③ 포인터(pass by pointer)
이 방법에서는 배열의 첫 번째 요소의 메모리 주소를 전달한다. 이 방법은 또한 동적 배열 크기를 허용한다.
구문:
return_type function_name (datatype *array_name)
예시:
// C++ program to demonstratethe passing of array by
// pointer.
#include <iostream>
using namespace std;
// function to print array elements
void printarray(int* a)
{
for (int i = 0; i < 5; i++)
*(a + i) = *(a + i) + 5;
}
int main()
{
// array creation
int a[5] = { 1, 2, 3, 4, 5 };
printarray(a); // Passing array to function
for (int i = 0; i < 5; i++)
cout << a[i] << " ";
return 0;
}
출력:
6 7 8 9 10
④ 참조 (pass by reference)
이 방법에서는 배열을 참조로 함수에 전달하고 그 크기도 명시적으로 전달한다. 즉, 첫 번째 요소와 배열의 크기 모두에 참조를 전달하는 것이다.
구문:
return_type function_name(data_type (&arr)[size])
// C++ to demonstrate array passing by pass by reference
#include <iostream>
using namespace std;
void modifyArray(int (&arr)[5])
{
// deducing size
int size = sizeof(arr) / sizeof(int);
for (int i = 0; i < size; ++i) {
arr[i] *= 2;
}
}
int main()
{
int arr[] = { 1, 2, 3, 4, 5 };
int n = 5;
modifyArray(arr);
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
return 0;
}
출력:
2 4 6 8 10
'C++' 카테고리의 다른 글
C++ 문자열(Strings) 총정리 (0) | 2024.06.04 |
---|---|
C++ 배열 붕괴(Array Decay) 총정리 (0) | 2024.06.03 |
C++ 배열 파라미터의 크기를 프린트하는 방법 (0) | 2024.05.29 |
C++ 배열 포인터(Array Pointer) 총정리 (0) | 2024.05.28 |
C++ 새로운 연산자를 사용해 2D 배열을 동적 선언하는 방법 (0) | 2024.05.28 |