c언어 call by reference 예제

값으로 호출하면 실제 인수의 복사본이 호출된 함수의 형식 인수에 전달되고 호출된 함수의 형식 인수에 대한 변경 내용은 호출 함수의 실제 인수 값에 영향을 주지 않습니다. 즉,이 C 튜토리얼에 대한 모든 것입니다, 여기서 당신은 (희망) 값별 호출과 참조에 의해 호출의 차이를 배웠습니다. 함수에 전달된 매개 변수를 실제 매개 변수라고 하는 반면 함수에서 수신한 매개 변수는 형식 매개 변수라고 합니다. 참조로 호출할 때 호출된 함수 내에서 실제 인수를 변경할 수 있습니다. 따라서 코드는 인수를 신중하게 처리해야 하며 다른 경우 예기치 않은 결과가 발생합니다. 이제 우리는 애니메이션 된 이미지를 사용하여 참조 및 값으로 호출에 대한 호출에 대해 이해할 수 있습니다. 참조로 값을 전달하기 위해 인수 포인터는 다른 값과 마찬가지로 함수에 전달됩니다. 따라서 함수 매개 변수를 다음 함수 swap()에서와 같이 포인터 유형으로 선언해야 하며, 이 함수는 인수로 가리키는 두 정수 변수의 값을 교환합니다. 간단한 예를 들어 보겠습니다. 다음 프로그램에서 의견을 읽으십시오.

이 소스 코드 예제에서 무슨 일이 일어나고 있는지 설명해 보겠습니다. 값 10이 있는 정수 b로 시작합니다. 함수 call_by_reference()가 호출되고 변수 b의 주소가 이 함수에 전달됩니다. 함수 내부에는 인쇄 문이 완료되기 전과 후에 몇 가지가 있으며 y가 가리키는 메모리의 값에 10이 추가됩니다. 따라서 함수의 끝에서 값은 20입니다. 그런 다음 main() 변수 b를 다시 인쇄하고 값이 예상대로 20으로 변경되는 것을 볼 수 있습니다. 값별로 호출할 때 원래 값은 변경하거나 수정할 수 없습니다. 값별로 호출할 때 함수에 값을 전달하면 스택 메모리 위치에 있는 함수 매개 변수에 의해 로컬로 저장됩니다. 함수 매개 변수의 값을 변경 하면 현재 함수에 대해서만 변경 되지만 main()와 같은 호출자 메서드 내부의 변수 값은 변경 되지 않습니다. 값별 호출은 위의 경우를 다루지 않으므로 참조로 호출이 필요합니다. C 언어의 참조 함수로 호출을 달성하기 위해 호출 함수는 설정할 변수의 주소를 제공하며(기술적으로 변수에 대한 포인터) 호출된 함수는 매개 변수를 포인터로 선언하고 변수에 간접적으로 액세스합니다.

그것을 통해. 인수의 주소가 함수에 전달되므로 호출된 함수 내의 코드는 실제 인수의 값을 변경할 수 있습니다. 값별 호출: 이 매개 변수 전달 메서드에서는 실제 매개 변수의 값이 함수의 형식 매개 변수에 복사되고 두 가지 유형의 매개 변수가 서로 다른 메모리 위치에 저장됩니다. 따라서 함수 내부에서 변경한 내용은 호출자의 실제 매개 변수에 반영되지 않습니다. 여기서 는 참조로 호출을 사용하여 번호를 교환하고 있습니다. 변수 num1 및 num2의 주소에서 스왑이 발생했기 때문에 swapnum() 함수를 호출한 후 변수 값이 변경되었습니다. 값별 호출을 공부하고 C에서 참조로 호출하는 동안 배열에 대한 스토리가 다르다는 점에 유의해야 합니다. 배열의 이름이 인수로 사용되는 경우 함수에 전달되는 값은 배열 시작 부분의 위치 또는 주소입니다. 이 값을 서브스크립팅하면 함수는 실제 배열의 모든 요소에 액세스하고 변경할 수 있습니다.

Posted in Uncategorized