참조와 함수의 값으로 매개변수 전달
다음 코드 조각을 고려하세요.
void trans(double x, double y, double theta, double m, double n) { m = cos(theta) * x + sin(theta) * y; n = -sin(theta) * x + cos(theta) * y; }
If 이 함수를 다음과 같이 호출합니다.
trans(center_x, center_y, angle, xc, yc);
xc와 yc의 값을 변경하면 실망하게 될 것입니다. 이는 매개변수가 기본적으로 C에서 값으로 전달되기 때문입니다. 즉, 함수 내부의 매개변수에 대한 변경 사항이 전달된 원래 변수에 반영되지 않습니다.
이 문제를 극복하려면 다음 중 하나를 전달하면 됩니다. 참조로 매개변수를 사용하거나 포인터 연산을 사용합니다.
참조 사용
C에서는 참조를 사용할 수 있습니다. 매개변수를 참조로 전달합니다. 이를 통해 전달된 원래 변수를 수정할 수 있습니다. 참조를 사용하도록 trans 함수를 수정하는 방법은 다음과 같습니다.
void trans(double x, double y, double theta, double& m, double& n) { m = cos(theta) * x + sin(theta) * y; n = -sin(theta) * x + cos(theta) * y; }
매개변수 유형은 이제 double(예: double&)에 대한 참조입니다.
그런 다음 다음과 같이 함수를 호출할 수 있습니다.
trans(center_x, center_y, angle, xc, yc);
이제 xc 및 값이 올바르게 수정됩니다. yc.
포인터 연산 사용
C에서 참조로 매개변수를 전달하는 또 다른 방법은 포인터 연산을 사용하는 것입니다. 이는 C에서 더 일반적이지만 C에서도 사용할 수 있습니다. 포인터 연산을 사용하도록 trans 함수를 수정하는 방법은 다음과 같습니다.
void trans(double x, double y, double theta, double* m, double* n) { *m = cos(theta) * x + sin(theta) * y; *n = -sin(theta) * x + cos(theta) * y; }
매개변수 유형은 이제 double(예: double*)에 대한 포인터입니다.
그런 다음 함수는 다음과 같습니다:
trans(center_x, center_y, angle, &xc, &yc);
이것은 또한 xc 및 값을 올바르게 수정합니다. yc.
위 내용은 C 함수에 매개변수를 전달할 때 원래 변수를 어떻게 수정합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!