> 웹 프론트엔드 > 프런트엔드 Q&A > 값에 의한 전달과 참조에 의한 전달이란 무엇입니까?

값에 의한 전달과 참조에 의한 전달이란 무엇입니까?

百草
풀어 주다: 2023-12-15 15:03:46
원래의
2446명이 탐색했습니다.

값 전달은 매개변수의 복사본을 함수에 전달하는 것이므로 함수는 매개변수 자체가 아닌 매개변수 값의 복사본을 수신합니다. 함수 내부의 매개변수에 대한 수정은 원본이 아닌 이 복사본에만 영향을 미칩니다. 변수의 값. 참조에 의한 전달은 매개변수의 주소나 참조를 함수에 전달하는 것입니다. 즉, 함수는 데이터의 복사본이 아닌 원본 데이터에 대한 참조를 받습니다. 함수 내부의 매개변수를 수정하면 원본 데이터에 직접적인 영향을 미칩니다. 이 두 가지 전달 방법에는 서로 다른 프로그래밍 언어 및 시나리오에서 고유한 적용, 장점 및 단점이 있습니다.

값에 의한 전달과 참조에 의한 전달이란 무엇입니까?

이 튜토리얼의 운영 체제: Windows 10 시스템, DELL G3 컴퓨터.

값에 의한 전달과 참조에 의한 전달은 프로그래밍 언어에서 함수에서 함수로 데이터를 전달하는 데 사용되는 매개변수를 전달하는 두 가지 일반적인 방법입니다. 이 두 가지 전송 방법은 데이터 처리에 있어 본질적인 차이점이 있습니다.

1. 값 전달

값 전달은 매개변수의 복사본을 함수에 전달하므로 함수는 매개변수 자체가 아닌 매개변수 값의 복사본을 받습니다. 함수 내부의 매개변수에 대한 수정 사항은 이 복사본에만 영향을 미치며 원래 변수의 값에는 영향을 미치지 않습니다. 값 전달은 C 및 C++의 기본 데이터 유형(예: int, float)에 사용되는 경우가 많습니다.

값 전달의 주요 특징은 함수가 매개변수에 대한 참조가 아닌 매개변수의 실제 값을 수신한다는 것입니다. 이는 함수가 값으로 전달된 인수를 수신할 때 실제로 원래 인수 자체가 아닌 인수 값의 복사본에 대해 작동함을 의미합니다. 따라서 함수 내의 매개변수를 수정해도 원래 변수 값에는 영향을 미치지 않습니다.

예를 들어 C 언어에서는 다음과 같은 방법으로 값 전달을 수행할 수 있습니다.

void increment(int a) {  
    a = a + 1;  
}  
  
int main() {  
    int x = 5;  
    increment(x);  
    printf("%d\n", x); // 输出仍然是5,因为函数increment操作的是x的副本,不影响x本身  
    return 0;  
}
로그인 후 복사

이 예에서 증분 함수는 정수 매개변수 a를 수신하고 1을 더하여 해당 값을 수정합니다. 그러나 이 수정은 원래 변수 x의 값에 영향을 미치지 않습니다. 왜냐하면 a는 단지 x의 복사본이기 때문입니다.

2. 참조로 전달

은 값으로 전달하는 것과 다릅니다. 참조로 전달은 매개변수의 주소나 참조를 함수에 전달하는 것입니다. 이는 함수가 데이터 복사본이 아닌 원본 데이터에 대한 참조를 수신한다는 의미입니다. 함수 내부의 매개변수를 수정하면 원본 데이터에 직접적인 영향을 미칩니다.

참조별 전달의 주요 특징은 함수가 데이터 복사본이 아닌 원본 데이터에 대한 참조를 수신한다는 것입니다. 즉, 함수가 참조로 전달된 인수를 받으면 실제로는 원본 데이터에 대한 직접 참조이므로 인수를 수정하면 원본 데이터에 영향을 미칩니다.

C++에서는 포인터 또는 참조를 사용하여 참조 전달을 수행할 수 있습니다.

void increment(int* a) {  
    *a = *a + 1;  
}  
  
int main() {  
    int x = 5;  
    increment(&x);  
    std::cout << x << std::endl; // 输出是6,因为函数increment直接修改了x的值  
    return 0;  
}
로그인 후 복사

이 예에서 증분 함수는 정수를 가리키는 포인터 a를 수신하고 포인터를 역참조하여 x 값을 수정합니다. a는 x에 대한 참조이므로 *a를 수정하면 x 값에 직접적인 영향을 미칩니다. 따라서 increment(&x)를 호출하면 x의 값이 6으로 수정됩니다.

요약하자면, 값 전송과 참조 전송의 주요 차이점은 다음과 같습니다. 값 전송은 매개변수 값의 복사본을 전송하는 것이며, 복사본 수정은 원본 데이터에 영향을 주지 않는 반면, 참조 전송은 매개변수 값에 대한 참조를 전송하는 것입니다. 원본 데이터 및 참조 수정은 원본 데이터에 직접적인 영향을 미칩니다. 이 두 가지 전달 방법에는 서로 다른 프로그래밍 언어 및 시나리오에서 고유한 적용, 장점 및 단점이 있습니다.

위 내용은 값에 의한 전달과 참조에 의한 전달이란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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