> 백엔드 개발 > C++ > 복사를 피하기 위해 C에서 참조로 배열을 전달하려면 어떻게 해야 합니까?

복사를 피하기 위해 C에서 참조로 배열을 전달하려면 어떻게 해야 합니까?

Patricia Arquette
풀어 주다: 2024-12-20 13:05:17
원래의
338명이 탐색했습니다.

How Can I Pass an Array by Reference in C   to Avoid Copying?

C에서 배열을 참조로 전달

참조로 배열을 전달하면 복사할 필요 없이 함수 내에서 원래 배열에 액세스할 수 있습니다. 그것. C에서는 & 연산자를 사용하여 참조로 배열을 전달할 수 있습니다.

다음 코드 조각을 고려하세요.

void foo(int (&myArray)[100])
{
    // Access and manipulate the elements of myArray here
}

int main()
{
    int a[100];
    foo(a);
}
로그인 후 복사

이 예에서 foo 함수는 100개의 정수 배열을 사용합니다. 참고로. (&myArray)[100] 구문은 myArray가 참조로 전달되고 100개의 정수 배열임을 지정합니다.

(&) 연산자는 배열의 주소를 얻는 데 사용됩니다. 표현식을 명확하게 하려면 괄호가 필요합니다. & 연산자는 [] 연산자보다 우선순위가 높으므로 &myArray[100]는 배열 자체의 주소가 아니라 배열의 100번째 요소 주소를 참조합니다.

값 대신 참조로 배열을 전달하면 전체 배열을 함수에 복사하는 오버헤드를 피할 수 있으므로 유리합니다. 이는 성능을 크게 향상시킬 수 있으므로 대규모 배열의 경우 특히 중요합니다.

(&myArray)[100] 구문은 100개의 정수 배열만 허용한다는 점에 유의하세요. 다른 크기의 배열을 전달하려는 경우 모든 크기의 배열을 허용하는 구문(&myArray)을 사용할 수 있습니다. 그러나 이 구문을 사용하면 함수 내에서 myArray에 sizeof를 사용할 수 없습니다.

위 내용은 복사를 피하기 위해 C에서 참조로 배열을 전달하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿