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

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

Dec 15, 2023 pm 03:03 PM
참조로 전달값으로 전달

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

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

이 튜토리얼의 운영 체제: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
usestate () 이해 : 국가 관리에 대한 포괄적 인 안내서usestate () 이해 : 국가 관리에 대한 포괄적 인 안내서Apr 25, 2025 am 12:21 AM

usestate () isareacthookusedtomanagestatefunctionalcomponents.1) itinitializesandupdatesstate, 2) workaledtthetThetThepleFcomponents, 3) canleadto'Stalestate'ifnotusedCorrecrally 및 4) performancanoptimizedUsecandusecaldates.

React 사용의 장점은 무엇입니까?React 사용의 장점은 무엇입니까?Apr 25, 2025 am 12:16 AM

Reactispopularduetoitscomponent 기반 아카데입, 가상, Richcosystem 및 declarativenature.1) 구성 요소 기반 ectureallowsforeusableuipieces, Modularityandmainability 개선 가능성.

React의 디버깅 : 일반적인 문제를 식별하고 해결합니다React의 디버깅 : 일반적인 문제를 식별하고 해결합니다Apr 25, 2025 am 12:09 AM

TodebugreactApplicationseffective, UsetheseStradegies : 1) 주소 propdrillingwithContapiorredux.2) handleaSnchronousOperationswithUsestAndUseefect, abortControllerTopReceConditions.3) 최적화 formanceSeMoAnduseCalbackTooid

React의 usestate () 란 무엇입니까?React의 usestate () 란 무엇입니까?Apr 25, 2025 am 12:08 AM

usestate () inreactAllowsStateManagementInfunctionalComponents.1) itsimplifiessTatemanagement, 2) usethepRevCountFunctionToupDatesTestateSpreviousValue, PropeingStaleScallanceBackferperperperperperperperperperperperperpertoptiMizatio

usestate () vs. usereducer () : 주 요구에 맞는 올바른 후크 선택usestate () vs. usereducer () : 주 요구에 맞는 올바른 후크 선택Apr 24, 2025 pm 05:13 PM

chelectionSimple, IndependentStateVaribles; useUserEducer () useuserEducer () forcomplexStateLogicor () whenStatedSonpreviousState.1) usestate () isidealforsimpleupdatesliketogglingabooleorupdatingacounter.2) usbetterformanagingmentiplesub-vvalusorac

usestate ()로 상태 관리 : 실용적인 자습서usestate ()로 상태 관리 : 실용적인 자습서Apr 24, 2025 pm 05:05 PM

Usestate는 클래스 구성 요소 및 기타 상태 관리 솔루션보다 우수합니다. 국가 관리를 단순화하고 코드를 더 명확하게하고 읽기 쉽고 React의 선언적 특성과 일치하기 때문입니다. 1) Usestate는 함수 구성 요소에서 상태 변수를 직접 선포 할 수있게합니다. 2) 후크 메커니즘을 통해 다시 렌더링하는 동안 상태를 기억합니다.

usestate ()를 사용하고 대체 상태 관리 솔루션을 고려할 때usestate ()를 사용하고 대체 상태 관리 솔루션을 고려할 때Apr 24, 2025 pm 04:49 PM

useUsestate () forlocalcomponentStateManagement; 고려 사항 forglobalstate, complexlogic, orperformanceissues.1) usestate () isidealforsimple, localstate.2) useglobalstatesolutionslikereduxorcontextforsharedstate.3) optforredooxtoolkitormobxcomcoccomcoccomcoccomcoccomcoccomcoccomcoccomcoccomporccomcoccomporccomcoccomport

React의 재사용 가능한 구성 요소 : 코드 유지 관리 및 효율성 향상React의 재사용 가능한 구성 요소 : 코드 유지 관리 및 효율성 향상Apr 24, 2025 pm 04:45 PM

reusablecomponentsinreacececodemainabenabilityandefficiency는 hallowingesamecomponentacrossdifferentpartsofanapplicationorprojects.1) 그들을 retuduceredundancyandsimplifyupdates.2) theyseconsistencyinuserexperience.3) theyquireoptim

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구