>> 데이비드 J. 마란 :의은에 프로그램을 작성하자 우리는 값을 교환하려고하는
두 변수 x와 y.
사전에, 내가 많이 썼어요 이미이 프로그램의.
첫째, 변수, X를 선언, 그리고, 거기에 1 값을 저장합니다.
그럼 난 변수 Y를 선언하고 거기에 값 2를 저장합니다.
>> 그런 다음 표시 할 printf의 진행 두 변수의 값.
다음 나는 다른 printf와 함께 주장 이러한 변수를 교환합니다.
그럼 난 스왑이라는 함수를 호출합니다.
그리고 제가 주장하는 변수 교체되었다.
그리고 나서 출력이 내가 주장 x와 y의 새로운 값입니다.
>> 이제이 기능 스왑은 무엇입니까?
그것은 C. 함께 제공 게 아니에요 사실, 우리는 상단에 보면 내
파일, 내가 선언 한 것을 알 수 있습니다 이 기능 스왑에 대한 프로토 타입
이 두 개의 정수를 취하도록 지정 임의로 및 B라고하고,이
함수는 아무 것도 반환하지 않습니다.
그래서 아마도 그것은 말하는가 스왑의와 b의 값에.
의 지금 스왑을 구현 할 수 있습니다.
>> 첫째, 임시을 선언하는거야 변수와 그것에 할당
의 값은,하지만 난 그냥 할 수 쉽게 그것 B에 저장된다.
나는 그 값을 변경하는거야 의 B에서와 동일합니다.
그리고 마지막으로, 나는 변화거야 B의 값은 어떤 것이었지만입니다 될
지금 온도에서.
>> 지금은 그냥 무슨 짓을했는지 주장 논리적으로 올바른 것입니다.
나는, 임시 변수에 저장 한 다음 B 형의 될 수있는 값을 변경하고,
무엇의이었다로 B의 값을 변경.
하지만 컴파일하고이 프로그램을 실행할 때 프로그램은 그게 아니에요 걱정
내가 보는 것.
>> 더 스왑을하지 않습니다.
점은, 아니 스왑을 슬래시가 없습니다.
그리고 불행하게도, printf의에 따르면, x 및 y의 값에도
우리는 교환 할 것을 주장 후 그들은 여전히​​ 1, 2입니다.
>> 이제 그 이유는?
글쎄요, 그것은 밝혀 그 주에, 때 우리 전달이 기능 스왑을 호출
인수로 x 및 y, 실제로의 정보 x와 y의 사본이
스왑으로 전달됩니다.
즉, 그 값 1과 2는 A와 B로 스왑에 전달.
그리고 그것은 우리가 궁극적으로있어 A와 B의 주에 교환.
>> 즉, 2가 1이되고, 1은 2가되고있다.
하지만 스왑은 반환 값이 없기 때문에 하고 있기 때문에 X의 사본을 수신
와 y, 그것은 문제가있다의 x와 y에 영향이 없습니다.
실제로, 및 B는 말하자면 범위된다 x와 y가 남아있는 반면, 교환하는
메인으로 범위.
>> 그래서 우리는 문제가있다.
하지만 어떻게 그것을 해결하기 위해?