>  기사  >  백엔드 개발  >  C++ 함수가 배열을 반환할 때의 차이점은 무엇입니까?

C++ 함수가 배열을 반환할 때의 차이점은 무엇입니까?

PHPz
PHPz원래의
2024-04-19 21:06:02626검색

C++ 함수에는 배열을 반환할 때 두 가지 동작이 있습니다. 복사본은 값으로 반환되고 복사본에 대한 변경 사항은 원래 배열에 영향을 주지 않으며 원래 배열에 대한 참조는 참조로 반환되며 반환된 배열의 변경 사항은 직접 반영됩니다. 원래 배열에서.

C++ 函数返回数组时有什么区别?

C++ 함수가 배열을 반환할 때의 차이점

C++에서 함수는 배열을 포함한 다양한 유형의 데이터를 반환할 수 있습니다. 함수가 배열을 반환할 때 두 가지 다른 동작이 있습니다.

  • 값으로 반환: 배열의 복사본을 호출자에게 반환합니다.
  • 참조로 반환: 사본이 아닌 배열에 대한 참조를 반환합니다.

값으로 반환

값으로 배열을 반환할 때 함수는 배열의 복사본을 만들어 호출자에게 반환합니다. 이렇게 하면 메모리의 새 복사본이 생성되고 해당 복사본에 대한 변경 사항은 원래 배열에 영향을 주지 않습니다.

구문: ​​

int* foo() {
    int arr[] = {1, 2, 3};
    return arr;
}

실용 사례:

int main() {
    int* arr = foo();
    arr[0] = 10; // 更改副本值,不影响原始数组
    return 0;
}

Return by reference

참조로 배열을 반환할 때 함수는 원래 배열에 대한 참조를 직접 반환합니다. 이는 메모리의 새 복사본을 생성하지 않습니다. 즉, 반환된 배열에 대한 모든 변경 사항이 원본 배열에 직접 반영된다는 의미입니다.

구문:

int* &bar() {
    static int arr[] = {1, 2, 3};
    return arr;
}

실제 사례:

int main() {
    int* &arr = bar();
    arr[0] = 10; // 更改原始数组值
    return 0;
}

Difference

사본 반환
Features 값으로 반환 참조로 반환
Yes No
반환된 배열에 대한 변경 사항은 원본 배열에 영향을 주지 않습니다 원본 배열에 직접 반영됩니다
메모리 오버헤드 사본을 생성하면 메모리 오버헤드가 더 높습니다 사본을 생성하지 마세요, 메모리 오버헤드가 낮습니다
효율성 실행 효율성이 낮음 실행 효율성이 높음

위 내용은 C++ 함수가 배열을 반환할 때의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.