>백엔드 개발 >C++ >C에서 참조로 배열을 올바르게 전달하는 방법은 무엇입니까?

C에서 참조로 배열을 올바르게 전달하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-26 22:14:10703검색

How to Correctly Pass Arrays by Reference in C  ?

C에서 참조로 배열 전달

C에서는 참조로 배열을 함수 인수로 전달하는 것이 일반적으로 허용됩니다. 함수 내의 배열은 호출 코드에 반영됩니다. 그러나 최근 컴파일러 오류로 인해 이러한 관행에 대한 의문이 제기되었습니다.

왜 "void foo(double& bar)"가 허용되지 않습니까?

"void foo( double& bar)"는 foo 함수에 이중 배열 참조를 전달하려고 시도합니다. 그러나 C에서는 이 접근 방식을 지원하지 않습니다. 배열은 주로 개별 요소 자체가 아닌 참조로 전달됩니다.

참조로 배열을 전달하는 올바른 방법

참조로 배열을 올바르게 전달하려면 다음을 사용하세요. 다음 구문은 다음과 같습니다.

void foo(double (&bar)[10]);

이 예에서 "bar"는 참조로 전달된 10개의 요소가 있는 double 배열을 나타냅니다. 이렇게 하면 foo 내에서 "bar"에 대한 모든 변경 사항이 호출 코드에서도 발생하게 됩니다.

대체 솔루션

참조로 배열을 전달하는 것이 종종 피하기 위해 선호됩니다. 불필요한 복사 및 성능 문제. 그러나 참조로 전달될 때 배열은 고정된 크기여야 한다는 점에 유의하는 것이 중요합니다. 임의 크기의 배열이 필요한 경우 다음 대안을 고려하십시오.

  • std::Vector: 벡터를 사용하여 요소를 유연한 배열에 저장합니다. 이를 통해 동적 크기 조정이 가능하고 코드 오류가 덜 발생합니다.
  • std::array(C 11 이상): 벡터와 유사하게 std::array는 고정된 크기 배열. 그러나 직접 메모리 액세스와 같은 추가 기능을 제공하며 효율적으로 복사할 수 있습니다.

위 내용은 C에서 참조로 배열을 올바르게 전달하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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