C++

C++ 함수에 배열 전달 총정리

김구티2 2024. 5. 29. 21:22

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 

728x90