1 00:00:00,000 --> 00:00:00,320 2 00:00:00,320 --> 00:00:02,700 >> 데이비드 J. 마란 :의은에 프로그램을 작성하자 우리는 값을 교환하려고하는 3 00:00:02,700 --> 00:00:04,970 두 변수 x와 y. 4 00:00:04,970 --> 00:00:07,490 사전에, 내가 많이 썼어요 이미이 프로그램의. 5 00:00:07,490 --> 00:00:11,130 첫째, 변수, X를 선언, 그리고, 거기에 1 값을 저장합니다. 6 00:00:11,130 --> 00:00:14,120 그럼 난 변수 Y를 선언하고 거기에 값 2를 저장합니다. 7 00:00:14,120 --> 00:00:17,700 >> 그런 다음 표시 할 printf의 진행 두 변수의 값. 8 00:00:17,700 --> 00:00:21,090 다음 나는 다른 printf와 함께 주장 이러한 변수를 교환합니다. 9 00:00:21,090 --> 00:00:23,690 그럼 난 스왑이라는 함수를 호출합니다. 10 00:00:23,690 --> 00:00:26,100 그리고 제가 주장하는 변수 교체되었다. 11 00:00:26,100 --> 00:00:30,610 그리고 나서 출력이 내가 주장 x와 y의 새로운 값입니다. 12 00:00:30,610 --> 00:00:32,030 >> 이제이 기능 스왑은 무엇입니까? 13 00:00:32,030 --> 00:00:34,970 그것은 C. 함께 제공 게 아니에요 사실, 우리는 상단에 보면 내 14 00:00:34,970 --> 00:00:38,850 파일, 내가 선언 한 것을 알 수 있습니다 이 기능 스왑에 대한 프로토 타입 15 00:00:38,850 --> 00:00:42,750 이 두 개의 정수를 취하도록 지정 임의로 및 B라고하고,이 16 00:00:42,750 --> 00:00:44,300 함수는 아무 것도 반환하지 않습니다. 17 00:00:44,300 --> 00:00:48,370 그래서 아마도 그것은 말하는가 스왑의와 b의 값에. 18 00:00:48,370 --> 00:00:50,170 의 지금 스왑을 구현 할 수 있습니다. 19 00:00:50,170 --> 00:00:53,820 >> 첫째, 임시을 선언하는거야 변수와 그것에 할당 20 00:00:53,820 --> 00:00:57,260 의 값은,하지만 난 그냥 할 수 쉽게 그것 B에 저장된다. 21 00:00:57,260 --> 00:01:00,925 나는 그 값을 변경하는거야 의 B에서와 동일합니다. 22 00:01:00,925 --> 00:01:04,849 그리고 마지막으로, 나는 변화거야 B의 값은 어떤 것이었지만입니다 될 23 00:01:04,849 --> 00:01:06,340 지금 온도에서. 24 00:01:06,340 --> 00:01:08,910 >> 지금은 그냥 무슨 짓을했는지 주장 논리적으로 올바른 것입니다. 25 00:01:08,910 --> 00:01:12,780 나는, 임시 변수에 저장 한 다음 B 형의 될 수있는 값을 변경하고, 26 00:01:12,780 --> 00:01:15,580 무엇의이었다로 B의 값을 변경. 27 00:01:15,580 --> 00:01:18,620 하지만 컴파일하고이 프로그램을 실행할 때 프로그램은 그게 아니에요 걱정 28 00:01:18,620 --> 00:01:20,140 내가 보는 것. 29 00:01:20,140 --> 00:01:21,625 >> 더 스왑을하지 않습니다. 30 00:01:21,625 --> 00:01:24,350 점은, 아니 스왑을 슬래시가 없습니다. 31 00:01:24,350 --> 00:01:27,560 그리고 불행하게도, printf의에 따르면, x 및 y의 값에도 32 00:01:27,560 --> 00:01:31,560 우리는 교환 할 것을 주장 후 그들은 여전히​​ 1, 2입니다. 33 00:01:31,560 --> 00:01:32,630 >> 이제 그 이유는? 34 00:01:32,630 --> 00:01:36,160 글쎄요, 그것은 밝혀 그 주에, 때 우리 전달이 기능 스왑을 호출 35 00:01:36,160 --> 00:01:39,960 인수로 x 및 y, 실제로의 정보 x와 y의 사본이 36 00:01:39,960 --> 00:01:41,310 스왑으로 전달됩니다. 37 00:01:41,310 --> 00:01:45,430 즉, 그 값 1과 2는 A와 B로 스왑에 전달. 38 00:01:45,430 --> 00:01:48,590 그리고 그것은 우리가 궁극적으로있어 A와 B의 주에 교환. 39 00:01:48,590 --> 00:01:50,810 >> 즉, 2가 1이되고, 1은 2가되고있다. 40 00:01:50,810 --> 00:01:54,630 하지만 스왑은 반환 값이 없기 때문에 하고 있기 때문에 X의 사본을 수신 41 00:01:54,630 --> 00:01:58,220 와 y, 그것은 문제가있다의 x와 y에 영향이 없습니다. 42 00:01:58,220 --> 00:02:02,610 실제로, 및 B는 말하자면 범위된다 x와 y가 남아있는 반면, 교환하는 43 00:02:02,610 --> 00:02:03,990 메인으로 범위. 44 00:02:03,990 --> 00:02:05,070 >> 그래서 우리는 문제가있다. 45 00:02:05,070 --> 00:02:06,320 하지만 어떻게 그것을 해결하기 위해? 46 00:02:06,320 --> 00:02:08,312