C++의 함수에서 배열을 반환하는 방법
이 기사에서는 C++의 함수에서 배열을 반환하는 방법을 소개합니다.
포인터 조작을 사용하여 C++의 함수에서 C 스타일 배열 반환
C/C++에서array[]
표기법이 함수 매개 변수로 전달되면 전달 된 배열의 첫 번째 요소에 대한 포인터 일뿐입니다. 따라서 우리가 구성해야하는 함수 프로토 타입은 배열에 저장된 유형에 대한 포인터를 반환하는 것입니다. 우리의 경우에는int
입니다. 함수가 반환되면 배열 표기법 []
을 사용하여 요소에 액세스하거나 포인터 자체를 역 참조 할 수 있습니다 (이전처럼 포인터 산술을 수행 할 수도 있음).
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int *MultiplyArrayByTwo(int arr[], int size) {
for (int i = 0; i < size; ++i) {
arr[i] *= 2;
}
return arr;
}
int main() {
constexpr int size = 10;
int c_array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int *ptr = MultiplyArrayByTwo(c_array, size);
cout << "array = [ ";
for (int i = 0; i < size; ++i) {
cout << ptr[i] << ", ";
}
cout << "]" << endl;
return EXIT_SUCCESS;
}
출력:
array = [ 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, ]
MultiplyArrayByTwo
함수는void
로 구현 될 수 있으며 다음 예제와 같이 동일한 주소를 가리 키므로c_array
변수에서 수정 된 요소에 액세스 할 수 있습니다.
#include <iostream>
using std::cin;
using std::cout;
using std::endl using std::string;
void MultiplyArrayByTwo(int arr[], int size) {
for (int i = 0; i < size; ++i) {
arr[i] *= 2;
}
}
int main() {
constexpr int size = 10;
int c_array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
MultiplyArrayByTwo(c_array, size);
cout << "array = [ ";
for (int i = 0; i < size; ++i) {
cout << c_array[i] << ", ";
}
cout << "]" << endl;
return EXIT_SUCCESS;
}
‘벡터’컨테이너를 사용하여 C++의 함수에서 배열 반환
이 버전에서는 요소를 동적으로 확장 할 수있는vector
컨테이너에 배열을 저장하므로size
매개 변수를 전달할 필요가 없습니다.
함수에서 다른 객체를 반환하므로cpp_array
를 사용하여 액세스 할 수 없습니다. 새 변수를 만들고 여기에 함수 반환 값을 할당해야합니다. 그런 다음 반복하여 결과를 출력 할 수 있습니다.
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl using std::string;
using std::vector;
vector<int> MultiplyArrayByTwo(const vector<int> *arr) {
vector<int> tmp{};
for (const auto &item : *arr) {
tmp.push_back(item * 2);
}
return tmp;
}
int main() {
vector<int> cpp_array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
auto cpp_array_2x = MultiplyArrayByTwo(&cpp_array);
cout << "array = [ ";
for (int i : cpp_array_2x) {
cout << i << ", ";
}
cout << "]" << endl;
return EXIT_SUCCESS;
}
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook관련 문장 - C++ Function
- C++에서 기본 매개변수 재정의
- C++에서 클래스의 함수 선언에 있는 const 키워드
- C++의 shellExecute() 함수
- C++의 가상 함수
- C++의 시간(NULL) 함수
- C++의 코탄젠트 함수