함수 C++에서 배열 반환

Return Array From Function C



배열은 동일한 데이터 유형의 값을 가진 특정 컨테이너입니다. C++의 함수는 배열에 대한 작업을 수행하고 이러한 배열은 기본 함수로 반환됩니다. 이 현상을 설명하는 방법에는 여러 가지가 있습니다. 이 가이드에서는 몇 가지 일반적인 방법을 설명합니다.

포인터를 사용하여 정적 배열 반환

정상적인 배열을 사용할 때 일종의 비정상적인 결과가 발생할 가능성이 있습니다. 이를 피하기 위해 C++ 코드에서 정적 배열을 사용합니다. 우리가 사용한 예를 이해합시다. 이 함수에서는 여기에 언급된 것처럼 반환 유형이 5개인 배열을 선언했습니다.







정수 *함수()



값은 정수 유형이므로 아래 예에서 int로 태그가 지정됩니다. 함수를 포인터로 도입했으므로 함수는 포인터 유형이 될 것입니다. 값을 입력하면 배열이 기본 프로그램으로 반환됩니다.







메인 프로그램에서 우리는 함수를 호출했습니다. 함수에서 반환된 값을 받아들이기 위해 정수 변수를 사용합니다. 배열이 반환되면 해당 값에 쉽게 액세스할 수 있습니다. 값은 수동으로 인쇄됩니다.

정수*바늘=기능();

포인터의 목적은 배열의 인덱스 1에 있는 항목을 찾는 것입니다. 즉, 배열에 있는 값의 주소를 보여줍니다. 그런 다음 포인터를 반환할 함수 프로토타입을 사용합니다.



함수를 통해 반환된 배열의 출력을 보려면 Linux의 경우 Ubuntu 터미널에 액세스할 수 있어야 합니다. 이는 Linux 터미널을 통해 출력에 액세스할 수 있기 때문입니다. Linux에서는 모든 텍스트 편집기로 작성된 C++ 코드를 실행하기 위한 컴파일러가 필요합니다. 이 컴파일은 G++를 통해 수행됩니다. -o는 출력을 파일에 저장하는 데 사용됩니다. 여기에 출력 파일과 소스 코드 파일이 필요합니다. 컴파일 후 코드를 실행합니다.

$지++ -또는파일1 파일1.c
$./파일1

출력에서 함수에서 초기화된 배열이 수동으로 초기화되고 포인터를 통해 정적 배열을 사용하여 메인 함수에 표시되는 것을 볼 수 있습니다.

포인터를 사용하여 동적으로 할당된 배열 반환

동적 할당을 사용하여 배열을 반환할 수 있습니다. 배열은 new라는 단어를 사용하여 동적으로 할당할 수 있습니다. 그것들은 우리가 스스로 삭제할 때까지 거기에 남아 있을 것입니다. 정적 배열은 크기가 고정되어 있으므로 초기화 중에 크기를 제공해야 합니다. 어레이가 생성되면 런타임 또는 이후에 크기를 늘리기가 어렵습니다. 그러나 동적 배열의 경우 값을 입력하면 확장되기 때문에 원할 때마다 항목을 더 추가할 수 있습니다. 따라서 크기를 지정하거나 식별할 필요가 없습니다.

여기에서 사용한 예제로 이동합니다. 정적 배열과 함께 포인터를 사용한 이전 예제에서와 같이 포인터가 있는 동적 배열을 사용했습니다.

정수*기능()

함수 선언 후 배열은 동적으로 선언됩니다.

정수*정렬= 새로운 정수 [100];

새로운 용어는 동적 배열을 생성하는 데 지속적으로 사용됩니다. 배열에 값을 입력하여 배열에 대한 작업을 수행합니다. 그 후 배열은 기본 프로그램으로 반환됩니다.

이제 주요 기능을 고려하십시오. 우리는 함수를 호출했습니다. 배열이 반환되면 값을 받아들이기 위해 포인터 정수 유형 변수를 추가합니다.

정수*바늘=기능();

배열에 저장된 값은 수동으로 인쇄됩니다. 컴파일 및 실행 방법을 통해 출력을 얻습니다.

구조를 사용하여 배열 반환

구조체는 배열과 같은 컨테이너입니다. 그러나 배열에는 한 번에 동일한 데이터 유형의 값이 포함됩니다. 그리고 구조의 경우 둘 이상의 데이터 유형 값을 포함합니다. 우리는 sample이라는 구조를 취했습니다. 여기서 배열 선언은 함수 대신 구조 내부에 있습니다. 반환 유형은 구조의 이름입니다. 구조 변수는 주 프로그램으로 반환됩니다. 구조는 선언을 위해 struct라는 단어를 사용합니다.

구조체 샘플
{
정수[100];
};

구조체 선언 이후 구조체의 객체를 생성하는 함수를 사용하였다. 이 개체는 구조에 액세스하는 데 사용됩니다. 이 함수는 이 객체를 통해 배열을 인쇄할 수 있도록 구조의 객체를 주 함수로 반환합니다. 변수는 변수의 값을 가져옵니다. 이 값은 배열에 값을 입력할 정수입니다. 이 예에서와 같이 6을 숫자로 선택했습니다. 따라서 숫자는 배열에 최대 6까지 입력됩니다.

구조체 샘플 함수(정수N)

이제 주 프로그램으로 이동하여 다음을 통해 배열에 액세스하는 개체를 만들었습니다.

구조체 샘플 x;

객체 초기화 후 배열에 숫자를 입력하려는 변수에 값이 추가됩니다. 함수 호출에서 매개변수의 값을 전달합니다.

NS=기능(N);

for 루프를 사용하여 표시할 것입니다. 값은 주 프로그램 시작 시 선언된 객체를 통해 표시됩니다.

출력은 프로그램에 6개의 숫자를 입력했기 때문에 결과에 6개의 값이 표시되었음을 나타냅니다.

Std를 사용하여 배열 반환

C++는 많은 메서드를 사용하여 함수에서 배열을 반환합니다. 그 중 하나는 std::array를 통한 것입니다. 구조의 템플릿입니다. 이 기능은 또한 크기()와 비어 있음()의 두 가지 기능을 더 제공합니다. 전체 배열이 기본 프로그램으로 반환됨을 나타내는 배열 이름이 반환됩니다. 여기에 헤더 파일 배열을 추가합니다. 라이브러리 외에도 배열의 모든 기능이 포함되어 있습니다.

#포함하다

정렬<정수,10>기능()

전체 배열을 이름으로 반환할 수 있으므로 함수 선언에서 배열을 반환 유형으로 사용합니다. 데이터가 배열에 입력됩니다. 그 후에 배열은 기본 프로그램으로 반환됩니다. 메인 함수로 이동하면 배열 변수는 함수가 호출될 때 배열을 받아들입니다.

=기능();

다시, for 루프는 배열 값을 표시하는 데 사용됩니다. 아래 표시된 이미지의 출력을 관찰합니다. 10개의 사이즈를 사용하였으므로 0개의 숫자가 입력됩니다. 따라서 다음이 표시됩니다.

벡터 컨테이너를 통해 배열 반환

이 접근 방식은 동적으로 할당된 배열입니다. 이 경우와 같이 배열 크기를 지정할 필요가 없습니다. 여기에 크기 매개변수가 필요하지 않습니다. 이 예제를 사용하여 벡터의 기능을 포함하는 라이브러리에 벡터 헤더를 추가해야 합니다.

반환 유형도 int 벡터이고 매개변수의 인수로 벡터 포인터를 포함하는 함수 쪽으로 이동합니다. temp라는 이름의 배열이 여기에 소개됩니다.

벡터<정수>곱하기ArrayByTwo(상수벡터<정수> *)

이 함수는 tmp.push_back() 함수를 사용하여 배열의 요소에 2를 곱합니다. 그런 다음 tmp를 반환합니다. 자동 유형 변수는 함수의 배열 값을 허용합니다. 배열에는 항목이 포함되어 있습니다.

출력은 벡터 컨테이너의 작업을 보여줍니다.

결론

앞서 언급한 기사에서 우리는 함수에서 배열을 반환하는 기능을 설명하기 위해 가장 일반적으로 사용되는 다섯 가지 방법을 설명했습니다.