"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > C++의 함수에서 배열을 반환하는 방법은 무엇입니까?

C++의 함수에서 배열을 반환하는 방법은 무엇입니까?

2024년 12월 22일에 게시됨
검색:143

How to Return an Array from a Function in C  ?

C의 함수에서 배열 반환

포인터를 사용하여 C의 함수에서 배열을 반환할 수 있습니다. 그러나 배열이 제대로 할당되지 않으면 문제가 발생할 수 있습니다.

귀하의 예에서는 스택에 할당된 배열을 반환하려고 합니다. 이로 인해 함수가 반환될 때 정의되지 않은 동작이 발생할 수 있습니다.

이 문제를 방지하려면 new 연산자를 사용하여 힙에 배열을 할당할 수 있습니다. 그런 다음 할당된 배열에 대한 포인터를 반환할 수 있습니다.

int* uni(int *a, int *b) {
    int *c = new int[10];
    int i = 0;
    while (a[i] != -1) {
        c[i] = a[i];
        i  ;
    }
    for (; i 

그런 다음 반환된 포인터를 사용하여 배열에 액세스할 수 있습니다.

int main() {
    int a[10] = {1, 3, 3, 8, 4, -1, -1, -1, -1, -1};
    int b[5] = {1, 3, 4, 3, 0};
    int *c = uni(a, b);
    for (int i = 0; i 

이 결과는 다음과 같습니다.

1 3 3 8 4 1 3 4 3 0

또 다른 대안은 구조체를 사용하여 배열을 래핑하는 것입니다. 이는 값으로 반환될 수 있으며 내부 배열을 포함하여 구조체가 복사됩니다.

struct myArray {
    int array[10];
};

myArray uni(int *a, int *b) {
    myArray c;
    int i = 0;
    while (a[i] != -1) {
        c.array[i] = a[i];
        i  ;
    }
    for (; i 

이 결과는 다음과 같습니다:

1 3 3 8 4 1 3 4 3 0
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3