참고: 참조로 호출을 이해하려면 포인터에 대한 기본 지식이 있어야 합니다. 포인터를 이해하려면 여기를 클릭하십시오. 함수 호출 값이란 무엇입니까? 함수를 호출하는 동안 실제 매개 변수를 전달하면 이를 함수 호출값이라고 합니다. 이 경우 실제 매개 변수의 값이 형식 매개 변수에 복사됩니다. 따라서 형식 매개 변수에서 수행되는 작업은 실제 매개 변수에 반영되지 않습니다. 함수 내부에서 변경되었지만 값에는 변화가 없음을 보여 주며, 값이 변경되지 는 않습니다. C의 함수에 매개 변수를 전달하는 참조 방법으로 호출과 호출 사이의 차이를 읽는 것을 즐겼기를 바랍니다. 당신이 어떤 제안 / 의견이 있거나이 페이지에 오류가 발생하면 우리를 작성하십시오. 읽어 주셔서 감사합니다! 함수는 값별 호출 또는 참조별 호출의 두 가지 방법으로 호출할 수 있습니다. 이러한 두 가지 방법은 일반적으로 매개 변수로 전달되는 값의 유형으로 구분됩니다. C는 C ++ 및 Java와 같은 참조를 지원하지 않기 때문에 모든 함수 인수는 “값으로”전달됩니다.

C에서 호출 함수와 호출된 함수는 메모리를 공유하지 않습니다. 개인 임시 복사본만 변경할 수 있습니다. 내 인생에서 처음으로,나는이 개념을 얻었다. 그런 이해의 예로 설명해 주셔서 대단히 감사합니다. 이 예제에서는 sqr(10)에 대한 인수 값이 매개 변수 p로 복사됩니다. 할당 p = p*p가 발생하면 로컬 변수 p만 수정됩니다. sqr()를 호출하는 데 사용되는 변수 n은 여전히 값 10을 가있습니다. 따라서 출력은 10의 Sqrt가 100입니다. 호출자의 메모리를 수정하려는 일반적인 예는 두 값을 교환하는 swapByValue() 함수입니다. C가 값으로 호출을 사용하는 경우 다음 버전의 스왑ByValue()가 작동하지 않습니다…

함수 호출에 인수/매개 변수를 전달하는 방법에는 값별 호출과 참조호출의 두 가지 방법이 있습니다. 값별 호출과 참조별 호출의 주요 차이점은 값별 호출에서 실제 인수의 복사본이 각 형식 인수에 전달된다는 것입니다. 참조로 실제 인수의 위치(주소)가 형식 인수로 전달되지만 형식 인수에 대한 변경 내용은 실제 인수에도 반영됩니다. 참조로 호출하면 실제 인수의 위치(주소)가 호출된 함수의 형식 인수에 전달됩니다. 즉, 실제 인수의 주소에 액세스하여 호출된 함수 내에서 인수를 변경할 수 있습니다. 함수 내의 코드는 함수를 호출하는 데 사용되는 인수를 변경할 수 없습니다. 즉, 값으로 호출할 때 원래 값은 수정되지 않습니다. 값별 호출을 공부하고 C에서 참조로 호출하는 동안 배열에 대한 스토리가 다르다는 점에 유의해야 합니다. 배열의 이름이 인수로 사용되는 경우 함수에 전달되는 값은 배열 시작 부분의 위치 또는 주소입니다. 이 값을 서브스크립팅하면 함수는 실제 배열의 모든 요소에 액세스하고 변경할 수 있습니다.

지금까지 우리는 함수를 호출하는 방법에 대해 잘 알고 있습니다. 그러나 신중하게 관찰하면 함수를 호출하고 함수에 전달할 때마다 항상 변수 값을 호출 된 함수에 전달했습니다. 참조로 호출에 대한 다음 예제를 고려합니다. 참조로 호출할 때 호출된 함수 내에서 실제 인수를 변경할 수 있습니다. 따라서 코드는 인수를 신중하게 처리해야 하며 다른 경우 예기치 않은 결과가 발생합니다. 지금, 우리는 다음 예에서와 같이 실제 값을 전달하여 함수 swap()를 호출 할 수 있습니다 – 값으로 호출은 위의 경우를 해결하지 않습니다, 따라서 우리는 참조로 호출해야합니다.