C++의 함수에서 배열을 반환하는 방법

Jinku Hu 2023년10월12일
  1. 포인터 조작을 사용하여 C++의 함수에서 C 스타일 배열 반환
  2. ‘벡터’컨테이너를 사용하여 C++의 함수에서 배열 반환
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;
}
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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++ Array