C++ 함수에는 배열을 반환할 때 두 가지 동작이 있습니다. 복사본은 값으로 반환되고 복사본에 대한 변경 사항은 원래 배열에 영향을 주지 않으며 원래 배열에 대한 참조는 참조로 반환되며 반환된 배열의 변경 사항은 직접 반영됩니다. 원래 배열에서.
C++에서 함수는 배열을 포함한 다양한 유형의 데이터를 반환할 수 있습니다. 함수가 배열을 반환할 때 두 가지 다른 동작이 있습니다.
값으로 배열을 반환할 때 함수는 배열의 복사본을 만들어 호출자에게 반환합니다. 이렇게 하면 메모리의 새 복사본이 생성되고 해당 복사본에 대한 변경 사항은 원래 배열에 영향을 주지 않습니다.
구문:
int* foo() { int arr[] = {1, 2, 3}; return arr; }
실용 사례:
int main() { int* arr = foo(); arr[0] = 10; // 更改副本值,不影响原始数组 return 0; }
참조로 배열을 반환할 때 함수는 원래 배열에 대한 참조를 직접 반환합니다. 이는 메모리의 새 복사본을 생성하지 않습니다. 즉, 반환된 배열에 대한 모든 변경 사항이 원본 배열에 직접 반영된다는 의미입니다.
구문:
int* &bar() { static int arr[] = {1, 2, 3}; return arr; }
실제 사례:
int main() { int* &arr = bar(); arr[0] = 10; // 更改原始数组值 return 0; }
Features | 값으로 반환 | 참조로 반환 |
---|---|---|
Yes | No | 사본 반환|
반환된 배열에 대한 변경 사항은 | 원본 배열에 영향을 주지 않습니다 | 원본 배열에 직접 반영됩니다 |
메모리 오버헤드 | 사본을 생성하면 메모리 오버헤드가 더 높습니다 | 사본을 생성하지 마세요, 메모리 오버헤드가 낮습니다 |
효율성 | 실행 효율성이 낮음 | 실행 효율성이 높음 |
위 내용은 C++ 함수가 배열을 반환할 때의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!