>백엔드 개발 >C++ >C의 참조와 값으로 전달: 차이점은 무엇이며 언제 어느 것을 사용해야 합니까?

C의 참조와 값으로 전달: 차이점은 무엇이며 언제 어느 것을 사용해야 합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-22 05:55:10731검색

Pass by Reference vs. Value in C  : What's the Difference and When Should I Use Which?

C에서 참조에 의한 전달과 값에 의한 전달

C에서 함수에 인수를 전달할 때 두 가지 기본 방법이 있습니다. 즉, 값에 의한 전달과 참조로 전달됩니다. 효과적인 코딩을 위해서는 이 두 접근 방식의 차이점을 이해하는 것이 중요합니다.

값에 의한 전달

값에 의한 전달에서는 인수의 복사본이 함수 범위 내에서 생성됩니다. . 이 사본에는 원래 주장과 구별되는 자체 참조가 있습니다. 따라서 함수 내에서 지역 변수를 수정해도 함수 외부의 원본 개체에는 아무런 영향이 없습니다.

참조로 전달

반면에 참조로 전달은 함수에 원본 객체에 대한 직접 액세스 권한을 부여합니다. 그러나 이 용어에 대한 다양한 해석이 존재합니다.

인수 대 매개변수 참조

일부 개인은 참조에 의한 전달을 인수 자체가 아닌 참조되는 개체를 전달하는 것으로 참조합니다. . 이는 함수 내에서 새 객체가 생성되는 값에 의한 전달과는 다릅니다.

객체의 가변성

참조에 의한 전달은 객체가 객체를 생성할 수 없음을 의미한다고 주장하는 사람들도 있습니다. 호출 수신자 내에서 수정될 수 있습니다. 이 관점에서 객체의 값을 수정하는 함수는 함수 범위 내부와 외부 모두에 영향을 미칩니다.

참조에 의한 전달의 정의

혼란을 명확히 하기 위해 다음과 같이 참조로 전달을 정의합니다.

해당 매개변수에 참조 유형이 있고 직접 바인딩되는 경우에만 인수가 참조로 전달됩니다. 인수 표현식. 다른 모든 경우에는 값에 의한 전달입니다.

참조에 의한 전달과 값의 예

다음 예를 고려하세요.

  • 값 전달:

    • void f1(Object o);
    • f1(Object());
    • int i = 42;
  • Pass와 같은 리터럴 값 전달 참고로:

    • void f1(Object *&op);
    • 객체 a; 개체 *op1 = &a; f1(op1);
    • f2(b)와 같이 참조로 객체를 직접 전달

참조 및 값으로 전달의 의미

  • 객체 수정이 전달되었습니다. 참조로 함수 범위를 넘어서 지속됩니다.
  • 값으로 전달된 객체에 대한 수정은 원래 값에 영향을 주지 않습니다.
  • 참조로 전달이 더 좋습니다. 복사를 방지하므로 큰 개체를 전달하는 데 효율적입니다.
  • 지나가세요 값은 함수가 실수로 객체를 수정할 수 있는 경우 객체 무결성을 보장합니다.

위 내용은 C의 참조와 값으로 전달: 차이점은 무엇이며 언제 어느 것을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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