> 백엔드 개발 > C++ > 본문

값별 호출을 사용하여 C/C 함수의 입력 매개변수를 수정할 수 없는 이유는 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-11-13 15:49:02
원래의
807명이 탐색했습니다.

Why Can't I Modify Input Parameters in C/C++ Functions Using Call-by-Value?

Why Call-by-Value Fails to Update Input Parameters

In C/C++, function parameters are typically passed by value, meaning that a copy of the input variable is created and sent to the function. This implies that any modifications made within the function only affect the local copy and not the original variable.

Consider the example:

#include <iostream>

using namespace std;

void changeValue(int value);

int main() {
  int value = 5;
  changeValue(value);
  cout << "The value is: " << value << "." << endl;
  return 0;
}

void changeValue(int value) {
  value = 6;
}
로그인 후 복사

This code attempts to modify the value of the input parameter within the changeValue function. However, the output remains 5, even though the function changes the local copy to 6.

This is because the changeValue function receives a copy of the value variable from main(). The function then operates on this local copy, which is independent of the original variable in main(). Therefore, the changes made within the function do not carry over to the original variable.

Using Call-by-Reference to Modify Input Parameters

To modify the original variable from within a function, call-by-reference must be used. This allows the function to access and modify the actual variable in memory, rather than just a copy:

#include <iostream>

using namespace std;

void changeValue(int &value);

int main() {
  int value = 5;
  changeValue(value);
  cout << "The value is: " << value << "." << endl;
  return 0;
}

void changeValue(int &value) {
  value = 6;
}
로그인 후 복사

In this example, the changeValue function takes a reference to the value variable, represented by the ampersand (&). This allows the function to access and modify the original variable directly. As a result, when the function sets the value to 6, it modifies the actual variable in main(), and the output correctly reflects the change.

위 내용은 값별 호출을 사용하여 C/C 함수의 입력 매개변수를 수정할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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