1 00:00:00,000 --> 00:00:06,180 2 00:00:06,180 --> 00:00:07,820 >> 제이슨 허쉬 호른 :에 오신 것을 환영합니다 A5에, 여러분. 3 00:00:07,820 --> 00:00:11,270 우리는 앞으로 우리의 흥미 진진한 주를 많은 새가 있습니다 주로하기 때문에 4 00:00:11,270 --> 00:00:12,350 이 방에 직면 해있다. 5 00:00:12,350 --> 00:00:12,920 그것은 훌륭합니다. 6 00:00:12,920 --> 00:00:15,740 여러분의 많은 사고가 여기에 있습니다, 하는 더 나은 것입니다. 7 00:00:15,740 --> 00:00:18,220 그렇게 잘하면 당신은 우리에 가입하겠습니다. 8 00:00:18,220 --> 00:00:20,220 >> 이번 주에 우리는 보낼거야 섹션의 벌크 9 00:00:20,220 --> 00:00:21,870 퀴즈를 준비. 10 00:00:21,870 --> 00:00:26,580 우리의 의제 당 그래서, 우리는 이야기 할 것입니다 클래스의 자원에 대해 조금, 11 00:00:26,580 --> 00:00:30,350 또한 퀴즈 후, 다시 클래스 이야기의 대부분을 지출 12 00:00:30,350 --> 00:00:31,390 질문에 대해. 13 00:00:31,390 --> 00:00:33,900 우리는 응답 완료되면, 당신의 질문 경우, 또는 질문 14 00:00:33,900 --> 00:00:39,010 자연스럽게 나는 몇 가지 코드에 우리를 인도 중간 고사에서 샘플에 문제가 15 00:00:39,010 --> 00:00:43,180 우리가 절에 라이브 코딩됩니다 지난 함께 일부 다른 키웠다 16 00:00:43,180 --> 00:00:45,420 커버하는 좋은 주제. 17 00:00:45,420 --> 00:00:48,280 >> 그래서 첫 번째, 우리는에 겪었어요로 당신을 생각 나게하는 주 지난 몇 18 00:00:48,280 --> 00:00:51,700 사람, 자원의 톤이있다 이 과정에 사용할 수 있습니다. 19 00:00:51,700 --> 00:00:55,020 그들 중 많은 사람들이 매우 도움이 될 것입니다 당신에게 당신에 계속 20 00:00:55,020 --> 00:00:57,280 퀴즈 0 공부 때문에 그것은 화요일 오후입니다. 21 00:00:57,280 --> 00:00:59,630 그래서 모두가왔다 조금 공부. 22 00:00:59,630 --> 00:01:02,640 >> 강의 노트와 소스가 있습니다 코드 당신이해야 23 00:01:02,640 --> 00:01:04,050 확실히 확인. 24 00:01:04,050 --> 00:01:05,019 반바지를보세요. 25 00:01:05,019 --> 00:01:07,470 study.cs50.net를 확인하세요. 26 00:01:07,470 --> 00:01:11,770 그리고, 다수에게, 아래에 나열된 다른 자원. 27 00:01:11,770 --> 00:01:14,020 >> 또, 퀴즈 0 내일 1시에서. 28 00:01:14,020 --> 00:01:18,230 아직 수행하지 않은 경우, 확인 에 관하여 퀴즈 0 문서 중 29 00:01:18,230 --> 00:01:21,370 파악하는 과정의 홈페이지 당신은 퀴즈를 복용하는 곳. 30 00:01:21,370 --> 00:01:25,770 퀴즈 1:10에서 시작 칠십분 후 종료됩니다. 31 00:01:25,770 --> 00:01:29,610 당신 1:10 이후에 표시하는 경우에, 당신은있어 많은 적은 분을 얻을 것 32 00:01:29,610 --> 00:01:30,940 (70)는 퀴즈를하는 것보다. 33 00:01:30,940 --> 00:01:33,570 그래서 당신이 제 시간에 거기 있는지 확인하십시오. 34 00:01:33,570 --> 00:01:38,690 당신은 연장 학생이야 나있는 경우 다른 테스트를 고려, 그것은 35 00:01:38,690 --> 00:01:40,400 1시 내일하지 않을 수 있습니다. 36 00:01:40,400 --> 00:01:43,540 그러나 다시, 약 퀴즈 0 확인 당신이시기를 알 수 있도록 문서화 37 00:01:43,540 --> 00:01:44,760 당신은 퀴즈를 복용하고 있습니다. 38 00:01:44,760 --> 00:01:46,440 내가 여기까지 75 분 썼다. 39 00:01:46,440 --> 00:01:48,580 그 70, 옳지 않다 생각합니다. 40 00:01:48,580 --> 00:01:53,420 >> 그것은 일주일에 0에서 모든 자료를 포함 수요일에 지난 주 강의. 41 00:01:53,420 --> 00:01:59,350 그리고 또,이 퀴즈에 대한, 그 당 문서는, 하나의 양면을하고 8 42 00:01:59,350 --> 00:02:03,770 당신이 얻을 용지 11 장으로 1 / 2 퀴즈 동안 노트로 사용할 수 있습니다. 43 00:02:03,770 --> 00:02:08,570 많은 사람들이, 대부분의 사람들은,이 아닌 경우 발견 한 가장 도움이되는 방법 44 00:02:08,570 --> 00:02:11,970 퀴즈 공부를하는 것은이다 연구 시트를 만들 45 00:02:11,970 --> 00:02:13,730 자신의 1 SIDER. 46 00:02:13,730 --> 00:02:17,710 그래서 과거의 사람을 보면 당신은 과거의 사람을 본 적이있다. 47 00:02:17,710 --> 00:02:19,960 볼 친구에게 다가 무엇을 그들은 그들의 퍼팅입니다. 48 00:02:19,960 --> 00:02:23,610 >> 그러나 손을 아래로, 당신이 할 수있는 최선의 방법 연구는 모든 것을 통해 이동하는 것입니다 49 00:02:23,610 --> 00:02:26,530 무엇을해야하거나해야하는 큰칼 아래로 의 장에 속하지 50 00:02:26,530 --> 00:02:30,570 종이, 그건 그냥 정말 때문에 당신이 있는지 확인하는 데 도움이 방법 51 00:02:30,570 --> 00:02:33,620 당신은 모든을 통해가는거야 그것은 어느 정도 알고있다. 52 00:02:33,620 --> 00:02:36,690 대부분의 사람들은, 우리가 찾을 경우에도 그들이 용지의 오른쪽에 앉아있다 53 00:02:36,690 --> 00:02:39,840 퀴즈에 그 옆에 설정하지 않는다 그것을 다시, 바로 그 때문에 54 00:02:39,840 --> 00:02:43,290 정보를 통해가는 과정 그들이 그것을 배울 수있었습니다. 55 00:02:43,290 --> 00:02:45,370 >> 아무도 질문이 있습니까 퀴즈 0 어떻습니까? 56 00:02:45,370 --> 00:02:50,120 57 00:02:50,120 --> 00:02:51,450 모두가 - 58 00:02:51,450 --> 00:02:53,230 나는 손의 쇼를 할 거 아니에요. 59 00:02:53,230 --> 00:02:53,550 마음 마십시오. 60 00:02:53,550 --> 00:02:54,790 나는 사람을 물어가는 공부를 시작했다. 61 00:02:54,790 --> 00:02:58,360 하지만 난 당신을 만들고 싶어하지 않는다 당신의 손을 들어하지. 62 00:02:58,360 --> 00:03:01,290 내가 말했다 같이 - 예, 아비는 진행. 63 00:03:01,290 --> 00:03:04,205 >> AVI : 어떤 유용한 일이 될 것입니다 한 호출기에 넣어? 64 00:03:04,205 --> 00:03:05,875 >> 학생 : 당신에게 달려 있습니다. 65 00:03:05,875 --> 00:03:08,210 >> 제이슨 허쉬 호른 : 당신이 얻을 당신의 판단을 사용합니다. 66 00:03:08,210 --> 00:03:13,220 한 호출기에 넣어 유용한 것들, 당신은 큰 O에 대해 혼동하는 경우 67 00:03:13,220 --> 00:03:17,510 검색의 다른 유형의 런타임 그리고 종류는, 거기에 그 넣어 68 00:03:17,510 --> 00:03:18,760 편리한 멋쟁이 차트. 69 00:03:18,760 --> 00:03:22,250 그 방법, 당신은에 그 질문을하는 경우 퀴즈, 당신은 시도도 할 필요가 없습니다 70 00:03:22,250 --> 00:03:23,560 그 중 또는 런타임을 통해 이유. 71 00:03:23,560 --> 00:03:24,730 당신은 그것을 아래로 복사 할 수 있습니다. 72 00:03:24,730 --> 00:03:28,320 당신은 퀴즈의 과거를 많이 보면 시간은 시간 문제가 실​​행중인. 73 00:03:28,320 --> 00:03:34,150 그래서 그 좋은 예가 될 것입니다 당신의 한 호출기에 두는 것. 74 00:03:34,150 --> 00:03:37,450 >> 당신이하는 경우에 넣어 다른 좋은 것들 선언하는 방법에 대한 혼란 75 00:03:37,450 --> 00:03:40,570 기능 또는 어떤 다른 부분의 함수 선언은 쓰기입니다 76 00:03:40,570 --> 00:03:43,400 그 거기에, 일반 버전 그리고 아마 예. 77 00:03:43,400 --> 00:03:47,290 당신이 포인터에 대해 혼란스러워하는 경우, 포인터 일이 얼마나의 다이어그램 78 00:03:47,290 --> 00:03:48,660 아마 정말하였습니다. 79 00:03:48,660 --> 00:03:52,440 당신은 재귀에 대해 혼란스러워하는 경우 거기에 재귀 함수를 샘플링 80 00:03:52,440 --> 00:03:54,980 또한 정말 도움이 될 증명할 수 있습니다. 81 00:03:54,980 --> 00:03:57,290 그것은 당신에게 몇 가지 아이디어를 제공합니까? 82 00:03:57,290 --> 00:04:01,820 >> AVI : 당신은 이해할 필요가 같은 전체 컴파일 과정 83 00:04:01,820 --> 00:04:03,220 어떻게 모든 작동하는지? 84 00:04:03,220 --> 00:04:06,620 >> 제이슨 허쉬 호른 : 모든 즉 덮여있다 할 수 85 00:04:06,620 --> 00:04:08,060 퀴즈에 표시됩니다. 86 00:04:08,060 --> 00:04:08,930 질문 - 87 00:04:08,930 --> 00:04:11,300 그러나 다시, 몇 가지가있을 것입니다 다른 사람보다 가중치가. 88 00:04:11,300 --> 00:04:14,330 몇 가지가 다시왔다 다시 클래스에서 89 00:04:14,330 --> 00:04:15,590 강의 및 절. 90 00:04:15,590 --> 00:04:17,220 다른 것들은하지 않은 그 자주 온다. 91 00:04:17,220 --> 00:04:22,900 >> 우리는 # include 및에 대해 많이 얘기했습니다 - 난 뭔가 어떤 사람들은에 의미 92 00:04:22,900 --> 00:04:24,390 컴파일 과정. 93 00:04:24,390 --> 00:04:29,120 우리는 집착, GDB에 대해 많이 얘기했습니다 우리가 사용하는 다른 플래그 때 94 00:04:29,120 --> 00:04:33,100 우리는 무언가를 컴파일하고, 무엇을 make15, 예를 들면, 실제로 95 00:04:33,100 --> 00:04:34,510 의미와 정말 않습니다. 96 00:04:34,510 --> 00:04:38,110 우리에 대한 많은 이야기를하지 않은 모든 단일 단계 97 00:04:38,110 --> 00:04:39,240 컴파일 과정. 98 00:04:39,240 --> 00:04:40,410 우리는 여전히 그것에 대해 얘기했습니다. 99 00:04:40,410 --> 00:04:42,550 그래서 여전히 뭔가 잘 알고 있어야합니다. 100 00:04:42,550 --> 00:04:44,610 그러나 다시, 우리는 않을거야 - 101 00:04:44,610 --> 00:04:49,140 수업 시간에 더 자주 올 일 더 올 가능성이 더 높습니다 102 00:04:49,140 --> 00:04:52,495 자주 그리고 더 많이 할 수 퀴즈에 가중치. 103 00:04:52,495 --> 00:04:53,280 >> 쿨. 104 00:04:53,280 --> 00:04:54,580 퀴즈 0에 대한 다른 질문? 105 00:04:54,580 --> 00:04:57,660 106 00:04:57,660 --> 00:05:00,050 >> OK, 그래서 목록을 넣어 보드의 항목을 참조하십시오. 107 00:05:00,050 --> 00:05:01,550 나는 강의를했다. 108 00:05:01,550 --> 00:05:07,340 나는에서 검토 섹션을 갔다 올 지난 밤에 그 슬라이드 109 00:05:07,340 --> 00:05:13,710 항목이 아닌 완전한 목록과 우리는 CS50 지금까지 덮여 있는지 110 00:05:13,710 --> 00:05:16,800 물건이 수도 퀴즈에 나타납니다. 111 00:05:16,800 --> 00:05:19,900 그래서 나는 통과하지 않을 것이다 이러한 모든 하나 하나. 112 00:05:19,900 --> 00:05:22,370 즉, 훨씬 더 걸릴 것 우리가 지금 가지고있는 것보다 시간. 113 00:05:22,370 --> 00:05:26,880 그러나 나는 희망 조그에 여기까지 득점 볼거리에로 당신의 기억이 수도 114 00:05:26,880 --> 00:05:28,420 또는 당신과 같은 익숙하지 않을 수 있습니다. 115 00:05:28,420 --> 00:05:32,850 >> 그리고 대부분의를 보내고 싶어요 에 대한 질문에 대답 섹션 116 00:05:32,850 --> 00:05:35,130 이러한 항목, 항목이 여기에 포함되지 않습니다. 117 00:05:35,130 --> 00:05:36,130 우리는 의사 코드를 작성할 수 있습니다. 118 00:05:36,130 --> 00:05:40,010 우리는 실제 코드를 작성할 수 있습니다 확인하는 방법이 - 119 00:05:40,010 --> 00:05:44,280 나는 당신의 질문에 대답하고 도움이 될 수 있습니다 모두가 근본적으로 이해 120 00:05:44,280 --> 00:05:48,330 이러한 항목을 많이 느낄 것이다, 그래서 예정으로 준비하고 안락한 121 00:05:48,330 --> 00:05:50,150 퀴즈 내일. 122 00:05:50,150 --> 00:05:52,300 그래서 목록을 통해 읽을. 123 00:05:52,300 --> 00:05:54,780 당신은 희망 섹션에왔다 몇 가지 질문을뿐만 아니라. 124 00:05:54,780 --> 00:05:58,480 준비가되면, 당신의 손을 들어 우리는 시작됩니다. 125 00:05:58,480 --> 00:06:01,590 126 00:06:01,590 --> 00:06:05,200 >> 명심하십시오, 질문은 당신이, 어리석은 질문이 없습니다. 127 00:06:05,200 --> 00:06:06,250 우리는 많은 것을 들었습니다. 128 00:06:06,250 --> 00:06:09,490 그리고 당신이 가지고있는 질문은, 나는 기꺼이 많은 다른 사람들을 모두 내기 129 00:06:09,490 --> 00:06:11,740 여기 앉아서보고 뿐만 아니라 온라인으로있다. 130 00:06:11,740 --> 00:06:13,770 그래서 당신은 단지 사람들을 도울 수 질문을 질문. 131 00:06:13,770 --> 00:06:15,070 마커스. 132 00:06:15,070 --> 00:06:18,040 >> 마커스 : 스택 사이의 힙, 미리 할당이 있습니다 133 00:06:18,040 --> 00:06:22,880 로 정의 된 메모리의 비율 이 스택 또는 힙입니다? 134 00:06:22,880 --> 00:06:25,010 아니면 정확히 어떻게 그 일을합니까? 135 00:06:25,010 --> 00:06:26,230 >> 제이슨 허쉬 호른 : 지금 질문입니다. 136 00:06:26,230 --> 00:06:28,640 나는 조금 추적 백업거야. 137 00:06:28,640 --> 00:06:30,910 모두를합니까 - 138 00:06:30,910 --> 00:06:31,660 여기에 정직하십시오. 139 00:06:31,660 --> 00:06:34,130 내가 인상을 요구하는지 알아 당신의 동료의 앞에 손. 140 00:06:34,130 --> 00:06:38,510 하지만 기분이 사람들이있다 스택과 힙 불편 141 00:06:38,510 --> 00:06:42,980 것을 통해 가고 싶습니다 그 무엇을 의미합니까? 142 00:06:42,980 --> 00:06:43,880 손을 경우 인상 - 143 00:06:43,880 --> 00:06:44,420 OK. 144 00:06:44,420 --> 00:06:45,120 감사합니다. 145 00:06:45,120 --> 00:06:48,420 그래서 우리는 스택에 갈 예정입니다 힙 정말 빨리 다음 146 00:06:48,420 --> 00:06:50,370 귀하의 질문에 대한 답변으로 이동합니다. 147 00:06:50,370 --> 00:06:58,250 >> 우리가 표현하는 상자를 끌어 그렇다면 컴퓨터의 메모리에, 일부는 무엇입니까 148 00:06:58,250 --> 00:07:02,160 이 상자에 갈 일? 149 00:07:02,160 --> 00:07:03,630 메인. 150 00:07:03,630 --> 00:07:04,020 주요 기능. 151 00:07:04,020 --> 00:07:05,890 어디 주요 가고 있는가? 152 00:07:05,890 --> 00:07:08,090 >> 학생 : [청취]. 153 00:07:08,090 --> 00:07:09,390 >> 제이슨 허쉬 호른 : 그래서 우리는거야 여기 아래 주를 넣어. 154 00:07:09,390 --> 00:07:12,180 155 00:07:12,180 --> 00:07:13,430 다른 어떤이 상자에 간다? 156 00:07:13,430 --> 00:07:16,000 157 00:07:16,000 --> 00:07:18,140 >> 학생 : 전화 기능. 158 00:07:18,140 --> 00:07:19,020 >> 제이슨 허쉬 호른 : 기능 우리는 전화있다. 159 00:07:19,020 --> 00:07:20,440 그리고 그들은 어디로 가야합니까? 160 00:07:20,440 --> 00:07:21,300 >> 학생 : 스택. 161 00:07:21,300 --> 00:07:22,380 >> 제이슨 허쉬 호른 : 그들은 스택에 이동합니다. 162 00:07:22,380 --> 00:07:27,350 그래서 우리는이 전화를 겁니다 여기까지 일 스택. 163 00:07:27,350 --> 00:07:31,880 그리고 상단까지, 우리는 힙이 있습니다. 164 00:07:31,880 --> 00:07:35,450 그래서 기억은이 같은 상자가 아닙니다. 165 00:07:35,450 --> 00:07:37,330 그러나 실제로 매우 유사하다. 166 00:07:37,330 --> 00:07:40,840 그것은을 통해 상자를 많이 될 것 이상에 따라 얼마나 큰 당신의 167 00:07:40,840 --> 00:07:43,730 컴퓨터 또는 메모리가 얼마나 큰입니다. 168 00:07:43,730 --> 00:07:46,950 >> 견적 작자 "바닥"에서 스택이다. 169 00:07:46,950 --> 00:07:50,880 그리고 여러 가지가있다 즉, 스택에 이동합니다. 170 00:07:50,880 --> 00:07:53,840 그리고 사람들은 기능에 따라 달라집니다 당신은 당신의 코드가 있습니다. 171 00:07:53,840 --> 00:07:57,780 당신은 항상 하나의 기능이 당신의 코드는 기본이라고, 그래서 거기에 항상 172 00:07:57,780 --> 00:08:00,480 여기 아래에있는 절 메인에 전념 스택. 173 00:08:00,480 --> 00:08:03,980 >> 스택의이 섹션 스택 프레임이라고합니다. 174 00:08:03,980 --> 00:08:09,580 다른 함수를 호출 할 때, 주 말 이진 검색 함수를 호출 175 00:08:09,580 --> 00:08:11,075 우리는 스택에 다른 프레임을 넣어. 176 00:08:11,075 --> 00:08:13,830 177 00:08:13,830 --> 00:08:17,320 보다 구체적으로, 우리는 가고있다 의 메모리 덩어리를 기부 우리 178 00:08:17,320 --> 00:08:22,960 이진 검색의 지방을 저장하는 컴퓨터 변수와 바이너리를 실행하는 179 00:08:22,960 --> 00:08:24,150 검색 코드. 180 00:08:24,150 --> 00:08:26,810 >> 그래서 우리는 이진 검색을 호출합니다. 181 00:08:26,810 --> 00:08:30,440 182 00:08:30,440 --> 00:08:33,340 이 메모리 덩어리에서, 우리는거야 지역 변수를 저장합니다. 183 00:08:33,340 --> 00:08:35,270 우리는 printf의 호출을 저장하는 것입니다. 184 00:08:35,270 --> 00:08:38,159 무슨 일이 있어도, 그 기능은 바로 거기에 저장 될 것. 185 00:08:38,159 --> 00:08:40,350 이진 검색을 실행하는 것입니다. 186 00:08:40,350 --> 00:08:42,210 그것은 실행을 완료 할 예정이다. 187 00:08:42,210 --> 00:08:47,450 C 단어는 무엇입니까 것을 의미 기능한다는 것을 188 00:08:47,450 --> 00:08:49,306 실행을 완료? 189 00:08:49,306 --> 00:08:50,040 >> 학생 : 돌아갑니다. 190 00:08:50,040 --> 00:08:50,870 >> 제이슨 허쉬 호른 : 돌아갑니다. 191 00:08:50,870 --> 00:08:53,230 그래서 return 문을 볼 때마다, 함수 단부 192 00:08:53,230 --> 00:08:54,350 그것은 그 안타. 193 00:08:54,350 --> 00:08:56,740 그래서 이진 검색은 수익에 타격을 줄 것으로 예상된다. 194 00:08:56,740 --> 00:09:01,360 메모리의이 부분은 본질적 것 최대 해제. 195 00:09:01,360 --> 00:09:03,510 그리고 주요 다시 실행에 갈 것입니다. 196 00:09:03,510 --> 00:09:07,240 , 전화가 있었다 어디든지 주를 일시 중지됩니다 이진 검색, 일부 반환 값을 얻을, 197 00:09:07,240 --> 00:09:08,700 실행을 계속합니다. 198 00:09:08,700 --> 00:09:10,840 이 스택 프레임은 멀리 갈 것입니다. 199 00:09:10,840 --> 00:09:14,810 >> 우리는 재귀 함수를 호출하는 경우 자체를 통해 호출 함수이다 200 00:09:14,810 --> 00:09:18,480 이상, 우리는 얻을 수 있습니다 - 우리는 말 재귀 적으로 이진 검색을했다. 201 00:09:18,480 --> 00:09:21,520 우리는 이진 검색 버전을 얻을 수 있습니다 이진 검색 두, 이진 검색 202 00:09:21,520 --> 00:09:24,090 세, 이진 검색 네, 이진 검색 다섯. 203 00:09:24,090 --> 00:09:27,950 그리고이 마지막 이진 검색 다섯 기본 경우, 스택에 타격을 줄 것으로 예상 204 00:09:27,950 --> 00:09:31,010 프레임은 돌아가 폐쇄를 유지합니다 우리는 다시 기본에 도달 할 때까지. 205 00:09:31,010 --> 00:09:32,530 우리는 약간의 재귀를 통해 갈 수 있습니다. 206 00:09:32,530 --> 00:09:35,530 당신이 있다면 그러나 모든이는 말을하는 것입니다 한 번에 여러 기능을 호출 207 00:09:35,530 --> 00:09:39,250 여러 스택있을거야 스택에 프레임. 208 00:09:39,250 --> 00:09:42,900 >> 힙, 한편, 업 여기에 기능을하지 않습니다, 209 00:09:42,900 --> 00:09:44,380 없는 지역 변수. 210 00:09:44,380 --> 00:09:48,920 그것은 동적으로 할당에의 변수. 211 00:09:48,920 --> 00:09:57,210 그래서 이들은이 될 수있는 변수입니다 주 또는 하나의 초기화 212 00:09:57,210 --> 00:09:58,640 그 주요 함수 호출. 213 00:09:58,640 --> 00:10:00,790 어디서나 코드에서, 그들은 초기화 할 수 있습니다. 214 00:10:00,790 --> 00:10:04,360 그리고 동적으로 초기화를 할당 된 변수입니다. 215 00:10:04,360 --> 00:10:06,970 우리는 C에서 어떤 기능을 사용합니까? 216 00:10:06,970 --> 00:10:07,600 >> 학생 : MALLOC. 217 00:10:07,600 --> 00:10:09,240 >> 제이슨 허쉬 호른 : MALLOC. 218 00:10:09,240 --> 00:10:10,800 당신의 malloc를 호출합니다. 219 00:10:10,800 --> 00:10:12,260 당신은 메모리의 공간을 얻을. 220 00:10:12,260 --> 00:10:15,020 그리고 메모리의 공간 힙에 있습니다. 221 00:10:15,020 --> 00:10:18,840 그리고 메모리의 공간을 유지 당신은 무료가 호출 할 때까지. 222 00:10:18,840 --> 00:10:22,670 >> 그래서 동적으로 할당 된 변수 힙은 당신만큼 존재한다 223 00:10:22,670 --> 00:10:25,250 그들이 존재하려면, 그들은하지 않습니다 명시 적으로 될 때까지 사라 224 00:10:25,250 --> 00:10:26,760 멀리 가서 그들에게 말해. 225 00:10:26,760 --> 00:10:29,670 당신은 하나의 함수에서 그들을 만들 수 있습니다. 226 00:10:29,670 --> 00:10:31,930 즉, 함수의 스택 프레임은 멀리 갈 것입니다. 227 00:10:31,930 --> 00:10:35,490 그러나 변수는 여전히 존재합니다 힙에가 해제 될 때까지, 228 00:10:35,490 --> 00:10:39,650 잠재적으로 호출 기능에 의해 이진 검색 또는 무엇이든. 229 00:10:39,650 --> 00:10:42,580 >> 그래서 그 힙 변수가 남아 원하는만큼에 대한 230 00:10:42,580 --> 00:10:43,490 그들이 숙박 시설을 제공합니다. 231 00:10:43,490 --> 00:10:46,090 그리고 그들은 여기에 넣어보세요. 232 00:10:46,090 --> 00:10:47,450 그리고 그 다음 하나는 거기에 넣어 가져옵니다. 233 00:10:47,450 --> 00:10:50,210 그들은 채워지고 유지하고 당신은 무료로 호출 할 때까지 거기에 머물. 234 00:10:50,210 --> 00:10:52,870 >> 그리고 본질적으로, 힙 및 스택, 마커스의 질문을 받고 235 00:10:52,870 --> 00:10:54,500 서로를 향해 성장합니다. 236 00:10:54,500 --> 00:10:57,730 그들은 서로에 실행하는 경우, 당신은했습니다 모든 메모리를 사용하여 237 00:10:57,730 --> 00:11:01,330 컴퓨터 및 프로그램이 종료됩니다 당신은 더 많은 메모리를 가지고 있지 않기 때문에 238 00:11:01,330 --> 00:11:02,420 사용 떠났다. 239 00:11:02,420 --> 00:11:07,290 그들 사이에있다 잠재적으로 다른 것들. 240 00:11:07,290 --> 00:11:10,980 그러나이 과정의 범위, 당신을 위해 그것에 대해 걱정할 필요가 없습니다. 241 00:11:10,980 --> 00:11:12,020 >> 그래서 대답했다 귀하의 질문에. 242 00:11:12,020 --> 00:11:13,520 걱정 말아요. 243 00:11:13,520 --> 00:11:15,550 하지만 그 긴 대답했다. 244 00:11:15,550 --> 00:11:17,800 당신이 알아야 할 모든 것입니다 힙 및 스택 것입니다 - 245 00:11:17,800 --> 00:11:18,900 하나는 아래에서 시작한다. 246 00:11:18,900 --> 00:11:19,570 스택은 않습니다. 247 00:11:19,570 --> 00:11:20,790 힙까지있다. 248 00:11:20,790 --> 00:11:21,990 그들은 서로 가까이 성장할 것입니다. 249 00:11:21,990 --> 00:11:23,110 >> 그들이 접촉하는 경우에, 그게 문제입니다. 250 00:11:23,110 --> 00:11:24,500 당신의 메모리가 부족합니다. 251 00:11:24,500 --> 00:11:28,760 뿐만 아니라, 알고 이외에 곳 그들은 무엇에 모두 저장되어있다 252 00:11:28,760 --> 00:11:30,512 스택과 힙. 253 00:11:30,512 --> 00:11:31,410 커티스. 254 00:11:31,410 --> 00:11:33,570 >> CURTIS : 그들이 충돌 할 때, 그 스택 오버플로가 있습니까? 255 00:11:33,570 --> 00:11:35,670 >> 제이슨 허쉬 호른 : 그들은 충돌, 즉, 스택 오버 플로우 아니다. 256 00:11:35,670 --> 00:11:38,340 스택 오버플로가 다른 영역입니다 당신이 원하는 경우에 우리에 갈 수있다. 257 00:11:38,340 --> 00:11:40,020 OK, 우리는 조금 후에 다시 돌아올 것이다. 258 00:11:40,020 --> 00:11:42,730 >> 학생 :라는 단어가 무엇입니까 서로 충돌 할 때, 259 00:11:42,730 --> 00:11:44,450 스택과 힙? 260 00:11:44,450 --> 00:11:46,640 >> 제이슨 허쉬 호른 : 지금은, 에 대해 걱정하지 마십시오. 261 00:11:46,640 --> 00:11:47,750 그냥 알 - 262 00:11:47,750 --> 00:11:50,530 나는 그 질문에 대답합니다 클래스 후. 263 00:11:50,530 --> 00:11:52,680 서로에 실행하는 경우, 당신은 도망 더 이상은 없습니다 메모리, 때문에 264 00:11:52,680 --> 00:11:53,330 이 공간. 265 00:11:53,330 --> 00:11:55,450 >> 학생 : 죄송합니다, 세그먼트 오류가 무엇입니까? 266 00:11:55,450 --> 00:11:58,710 >> 제이슨 허쉬 호른 : 세그먼트 오류가 요구 될 수있다 - 267 00:11:58,710 --> 00:12:02,240 원세그 잘못이라고 왜 따라 달라집니다. 268 00:12:02,240 --> 00:12:06,260 때때로, 스택 오버 플로우, 그것은거야 세그먼트 오류로 비난 말한다. 269 00:12:06,260 --> 00:12:08,180 >> 학생 : 어떤 역 참조에 대한 널 변수? 270 00:12:08,180 --> 00:12:10,040 그 세그먼트 오류가 있습니까? 271 00:12:10,040 --> 00:12:11,480 >> 제이슨 허쉬 호른 : 역 참조 널 포인터 - 272 00:12:11,480 --> 00:12:17,850 좋아, 그럼 당신은 포인터가있는 경우 null로 동일한 설정, 포인터, 리콜, 273 00:12:17,850 --> 00:12:20,270 저장 메모리 주소 자신의 값으로. 274 00:12:20,270 --> 00:12:23,660 그리고 널 포인터는 본질적으로 0을 저장, 0 번째 275 00:12:23,660 --> 00:12:26,670 그 변수의 주소. 276 00:12:26,670 --> 00:12:30,010 그래서 0X, 0, 0, 0, 0, 등등. 277 00:12:30,010 --> 00:12:35,030 하지의 메모리에 즉, 0 번째 주소 우리의 그림에서, 그 거기의 278 00:12:35,030 --> 00:12:38,800 어딘가에, 그는 곳이지 컴퓨터. 279 00:12:38,800 --> 00:12:40,130 우리는 그것을 터치 할 수 없습니다입니다. 280 00:12:40,130 --> 00:12:44,680 >> 그래서 프로그램이 실행이되면, 경우 뭔가 메모리로 이동하려고합니다 281 00:12:44,680 --> 00:12:48,990 주소 0, 그것은 것을 알고 그 빈 값입니다. 282 00:12:48,990 --> 00:12:50,820 그것은 아무것도 없을 것 알고있다. 283 00:12:50,820 --> 00:12:53,420 그래서 당신은 뭔가를 시도하고 사용하는 경우 와 같은 뭔가를 치료하거나 284 00:12:53,420 --> 00:12:58,355 해당 위치로 이동하기 위해 노력하고, 당신이있어 세그먼트 오류 또는 오류가 발생하는 것. 285 00:12:58,355 --> 00:13:00,520 그 질문에 대한 답변을합니까? 286 00:13:00,520 --> 00:13:03,170 >> 그리고 지금 우리는 다시 간다 스택 오버플로합니다. 287 00:13:03,170 --> 00:13:09,560 너희들은이 같은 스택의 관광 명소, 이전에 볼 수있는 -의 친한를 그려 보자 288 00:13:09,560 --> 00:13:11,966 스택 프레임의 닫습니다. 289 00:13:11,966 --> 00:13:15,050 모두가 그것을 볼 수 있습니까? 290 00:13:15,050 --> 00:13:16,650 그래서 우리는 우리의 스택 프레임이 있습니다. 291 00:13:16,650 --> 00:13:23,260 우리는 로컬로 배열을 저장하고 이 함수의 변수입니다. 292 00:13:23,260 --> 00:13:29,510 그래서 우리의 배열이 다섯 부분이 있습니다 말한다. 293 00:13:29,510 --> 00:13:33,230 그 중 다섯이 저장됩니다 이 스택 프레임. 294 00:13:33,230 --> 00:13:37,540 >> 우리는 저쪽에 쓰기 시작하면 이 배열의 경계 - 295 00:13:37,540 --> 00:13:43,990 그래서 우리는에 쓰기 시작하면, 의 그 0의 가정 해 봅시다. 296 00:13:43,990 --> 00:13:46,800 사람들은 다섯 인덱스입니다 우리의 배열의 형태가됩​​니다. 297 00:13:46,800 --> 00:13:50,980 우리는 인덱스 5로 쓰기 시작하면 어떤 우리가이있을 때 우리는 필요가 없습니다 298 00:13:50,980 --> 00:13:55,900 크기 5의 배열은, 우리로 쓰기 시작 인덱스 6, 7, 8, 9, 우리는 스택을 얻을 수있다 299 00:13:55,900 --> 00:13:57,960 오버플로 오류가 발생했습니다. 300 00:13:57,960 --> 00:14:00,510 >> 일반적으로 그렇지 않습니다 - 301 00:14:00,510 --> 00:14:04,910 당신은 아마 문제에 얻을 것이다 당신은 하나를 통해 이동합니다. 302 00:14:04,910 --> 00:14:08,640 그러나 일반적으로, 당신은으로 얻을 것이다 당신이 많이 가서하면 대부분의 문제 303 00:14:08,640 --> 00:14:12,770 당신은 지금까지 이상 당신이 쓰는 것을 이동 그것의 반환 주소에 304 00:14:12,770 --> 00:14:16,080 에 위치 기능, 스택 프레임의 하단. 305 00:14:16,080 --> 00:14:16,520 >> 오른쪽 때문에? 306 00:14:16,520 --> 00:14:17,670 당신 -에 - 죄송합니다. 307 00:14:17,670 --> 00:14:18,550 없음 "바로 때문입니다." 308 00:14:18,550 --> 00:14:20,470 >> 스택 프레임에서,이 지역 변수. 309 00:14:20,470 --> 00:14:27,090 스택의 맨 아래에 프레임의 반환 주소입니다. 310 00:14:27,090 --> 00:14:28,790 즉, 함수의 위치 끝나는대로 간다. 311 00:14:28,790 --> 00:14:33,750 그리고 당신은 그 반환을 덮어 쓸 경우 주소,이 스택 프레임 때, 312 00:14:33,750 --> 00:14:36,680 당신은 스택을 통과 할 때 프레임과 각 라인을 실행, 당신은있어 313 00:14:36,680 --> 00:14:40,350 새 반환 주소에 가서 그 대신으로도 쓰여 314 00:14:40,350 --> 00:14:40,910 실제 한. 315 00:14:40,910 --> 00:14:45,050 그리고 그것은 우리가 본 방법 일부 보안 침해 316 00:14:45,050 --> 00:14:46,780 컴퓨터에서 발생할 수 있습니다. 317 00:14:46,780 --> 00:14:52,760 >> 그래서 스택 오버플로, 짧은에서, 당신은 스택의 일부를 덮어 318 00:14:52,760 --> 00:14:55,440 당신은, 지방을 사용 하잖아요 변수는 당신이 사용하는 가정하고있어 319 00:14:55,440 --> 00:14:58,070 특히 당신이 덮어 쓰기 시작할 때 등 중요한 것들 320 00:14:58,070 --> 00:14:59,100 주소를 반환합니다. 321 00:14:59,100 --> 00:15:00,090 당신이 오류가 될겁니다. 322 00:15:00,090 --> 00:15:03,980 또는 어쩌면 당신은 시작할 수 도에 쓰기 - 323 00:15:03,980 --> 00:15:05,370 이진 검색했다 말 우측 메인 위. 324 00:15:05,370 --> 00:15:07,790 당신은 당신에게, 많이 덮어 쓴 경우 메인으로 작성할 수 있습니다. 325 00:15:07,790 --> 00:15:10,230 그러나 일반적으로, 당신은 이전에 오류가 발생 컴퓨터가 인식 한 후, 때문 326 00:15:10,230 --> 00:15:12,270 당신은 당신이 뭔가를하고있는 일을 할 수 없습니다. 327 00:15:12,270 --> 00:15:12,560 그래. 328 00:15:12,560 --> 00:15:13,910 >> 학생 : 차이 무엇입니까 스택 오버 플로우 사이 329 00:15:13,910 --> 00:15:16,940 및 버퍼 오버 플로우? 330 00:15:16,940 --> 00:15:19,420 >> 제이슨 허쉬 호른 : 버퍼 오버 플로우 보다 일반적인 유형입니다 331 00:15:19,420 --> 00:15:20,395 방금 설명한 것을. 332 00:15:20,395 --> 00:15:22,610 >> 학생 : 그래서 스택 오버플로가 있습니다 버퍼 오버 플로우의 예. 333 00:15:22,610 --> 00:15:23,420 >> 제이슨 허쉬 호른 : 그렇지. 334 00:15:23,420 --> 00:15:28,700 이것은 우리로 생각할 수있는 배열입니다 버퍼, 높은가는 것들에 대한 공간 335 00:15:28,700 --> 00:15:30,600 이는 스택 버퍼 오버 플로우이다. 336 00:15:30,600 --> 00:15:33,210 우리는 힙 버퍼 오버 플로우가있을 수 있습니다. 337 00:15:33,210 --> 00:15:36,870 거기에 종종 버퍼는,이 있다면 배열은 힙, 그리고 우리 338 00:15:36,870 --> 00:15:40,600 그 경계를 덮어, 우리는 것 힙 버퍼 오버 플로우가있다. 339 00:15:40,600 --> 00:15:44,870 >> 그리고이 과정의 범위를 넘어, 그들은 약간 다르게 감지하고 있습니다. 340 00:15:44,870 --> 00:15:48,040 컴파일러는 특별한이 각을 검출하는 방법. 341 00:15:48,040 --> 00:15:50,660 그러나 버퍼 오버 플로우가 더 일반적인 것입니다 나는이 기술 한 무슨 유형, 342 00:15:50,660 --> 00:15:54,090 어떤 스택 버퍼 오버 플로우했다. 343 00:15:54,090 --> 00:15:56,240 즉, 귀하의 질문에 대답 했습니까? 344 00:15:56,240 --> 00:15:57,910 달콤한. 345 00:15:57,910 --> 00:16:01,850 >> 다른 질문 관련이 있었다 스택이나 힙? 346 00:16:01,850 --> 00:16:04,920 347 00:16:04,920 --> 00:16:05,510 그래. 348 00:16:05,510 --> 00:16:08,220 >> 학생 : 당신은 무료로 문자열이 알고 그들은 힙이기 때문에 349 00:16:08,220 --> 00:16:09,305 당신은 메모리 누수가 싶지 않아요. 350 00:16:09,305 --> 00:16:12,240 하지만 전역 변수를 해제해야합니까 그와 같은 것들? 351 00:16:12,240 --> 00:16:14,335 아니면 자동으로 해제됩니다? 352 00:16:14,335 --> 00:16:15,700 >> 제이슨 허쉬 호른 : 좋은 질문입니다. 353 00:16:15,700 --> 00:16:22,340 그래서 CS50.H, 우리는이 일을 만들 에 대한 문자열을했다. 354 00:16:22,340 --> 00:16:23,800 문자열은 정말 무엇인가? 355 00:16:23,800 --> 00:16:24,810 >> 학생 : 샤아 스타. 356 00:16:24,810 --> 00:16:29,180 >> 제이슨 허쉬 호른 : 문자 스타, 포인터 문자, 포인터 357 00:16:29,180 --> 00:16:30,650 문자의 배열. 358 00:16:30,650 --> 00:16:32,210 즉, 문자열이 무엇인지입니다. 359 00:16:32,210 --> 00:16:36,050 그래서 우리는 그것을 해제 할 필요가 있기 때문에 하는 GetString, 이는 우리가 많이 사용 - 360 00:16:36,050 --> 00:16:38,370 문자열 이름을 사용하여 GetString 같습니다 - 361 00:16:38,370 --> 00:16:43,560 그것은 우리에 대한 몇 가지 메모리를 mallocs 힙 다음에 대한 포인터를 반환 362 00:16:43,560 --> 00:16:47,230 그 첫 번째 문자 문자열, 문자 스타. 363 00:16:47,230 --> 00:16:52,760 >> 그래서 표면적으로, 당신은되지 않은 경우 당신의 문자열 중 하나를 무료로 작성 364 00:16:52,760 --> 00:16:55,600 지금까지라고 했으므로이 일부 메모리가 누수되고. 365 00:16:55,600 --> 00:16:57,430 물론 우리는 이야기하지 않은 그것은, 그래서 아무도는에 못 듣게 되 잖아요 366 00:16:57,430 --> 00:16:58,520 그 일에 대한 문제. 367 00:16:58,520 --> 00:16:59,980 그러나 네, 앞으로. 368 00:16:59,980 --> 00:17:03,990 당신이하는 GetString을 호출 할 때입니다 힙에 약간의 공간을 mallocing. 369 00:17:03,990 --> 00:17:07,640 그리고 당신은 나중에 전화를 무료로하지 않는 경우 문자열, 당신은 메모리 누수가. 370 00:17:07,640 --> 00:17:09,440 즉, 귀하의 질문에 대답? 371 00:17:09,440 --> 00:17:10,606 >> 네 372 00:17:10,606 --> 00:17:15,020 >> 학생 : 그래서 그렇게, 우리는 사용합니까 반환하기 전에 무료 맞죠? 373 00:17:15,020 --> 00:17:18,510 마찬가지로,의 범위 내에서, 내가 생각하는 경우 우리는 내 주요 중간, 같은 말 374 00:17:18,510 --> 00:17:24,410 그 안에서의 정보 코드의 범위 중괄호, 직전 - 375 00:17:24,410 --> 00:17:26,140 당신이 알고 어디 좋겠 일반적으로 수익을했습니다. 376 00:17:26,140 --> 00:17:27,950 당신은 그 전에 무료로 넣어합니까? 377 00:17:27,950 --> 00:17:31,000 >> 제이슨 허쉬 호른 : 그래서 당신은 무료로 넣을 수 있습니다 당신은 무료로두고 싶은 곳. 378 00:17:31,000 --> 00:17:33,810 이 동적으로 할당되므로 변수, 그들이 할 수 있기 때문에 379 00:17:33,810 --> 00:17:39,170 특정의 범위를 넘어 살아 기능, 당신은에서의 malloc를 호출하는 경우 380 00:17:39,170 --> 00:17:44,140 별도의 기능, 예를 들면, 하는 GetString, 당신은 주 무료 호출 할 수 있습니다. 381 00:17:44,140 --> 00:17:46,050 당신은 그것을 호출 할 필요가 없습니다 특정 기능에 382 00:17:46,050 --> 00:17:47,570 malloc에​​ 호출입니다. 383 00:17:47,570 --> 00:17:50,340 그러나 당신은 그것을 호출 할 필요합니까 주요 반환되기 전에. 384 00:17:50,340 --> 00:17:51,120 >> 그리고 정말 따라 달라집니다. 385 00:17:51,120 --> 00:17:54,960 그것은 당신이 것을 malloc으로 할당 된 이유에 따라 달라집니다 처음에 공간. 386 00:17:54,960 --> 00:17:57,320 어떤 사람들은 부를 것이다 꽤 빨리 무료. 387 00:17:57,320 --> 00:17:59,220 어떤 사람들은 때까지 전화를 무료로하지 않습니다 자신의 프로그램의 끝. 388 00:17:59,220 --> 00:18:00,660 그리고 그들은 갈 거에요 무료 다. 389 00:18:00,660 --> 00:18:03,597 그것은 당신의 malloc이라는 이유에 따라 달라집니다. 390 00:18:03,597 --> 00:18:11,270 >> 학생 : 그리고 당신은 무엇을 말할 것 당신이 사용하는 GetString을 호출하면? 391 00:18:11,270 --> 00:18:13,320 당신은 무엇을 무료로 말할 것? 392 00:18:13,320 --> 00:18:20,040 >> 제이슨 허쉬 호른 : 그래서 구문 무료 단순히 무료 오픈 괄호, 부근에 있습니다 393 00:18:20,040 --> 00:18:22,130 괄호 및 포인터의 이름. 394 00:18:22,130 --> 00:18:26,410 그래서 당신은 문자열 이름 같음을 작성하는 경우 하는 GetString, 여기에 이​​름을 올려 놓을. 395 00:18:26,410 --> 00:18:27,760 즉, 포인터의 이름입니다. 396 00:18:27,760 --> 00:18:30,570 그리고 그 메모리를 무료로 알고 있습니다. 397 00:18:30,570 --> 00:18:33,920 >> 학생 : 그것은 그 메모리를 해제 그래서 때, 포인터는 여전히 그 곳을 가리키는 398 00:18:33,920 --> 00:18:34,970 메모리? 399 00:18:34,970 --> 00:18:39,020 나 또한 비운 포인터입니다 이 가리키는 주소. 400 00:18:39,020 --> 00:18:40,290 >> 제이슨 허쉬 호른 : 우리는 그것을 시도해야합니다. 401 00:18:40,290 --> 00:18:41,430 우리는 코딩해야합니다. 402 00:18:41,430 --> 00:18:43,880 우리가 얻을 때의 돌아 오게 코딩과의 그 코딩 할 수 있습니다. 403 00:18:43,880 --> 00:18:46,000 그리고 당신은 대답을 파악하려는 경우 즉, 당신은 할 수 또한 코드가 404 00:18:46,000 --> 00:18:46,690 그 사이에. 405 00:18:46,690 --> 00:18:49,100 그러나 그것은 좋은 질문입니다. 406 00:18:49,100 --> 00:18:53,480 >> 학생 : 그것은 할 수있다 너무 빨리 무료 뭔가? 407 00:18:53,480 --> 00:18:58,530 그래서 당신은 아직도 당신의 프로그램을 위해 필요, 당신은 메모리 공간을 해제? 408 00:18:58,530 --> 00:18:59,200 >> 제이슨 허쉬 호른 : 예. 409 00:18:59,200 --> 00:19:03,020 그것은하면 가능하다 뭔가를 무료 다음 다시 사용, 당신은 것입니다 410 00:19:03,020 --> 00:19:06,890 오류로 실행합니다. 411 00:19:06,890 --> 00:19:10,810 당신이 해제 때문에 즉, 당신에의 다음 뭔가 나중에했다. 412 00:19:10,810 --> 00:19:13,940 그래서 프로그래머의 실수였다. 413 00:19:13,940 --> 00:19:14,780 그러나 예. 414 00:19:14,780 --> 00:19:17,760 당신은을 작성할 수 있습니다. 415 00:19:17,760 --> 00:19:19,240 >> 에 더 이상 질문 - 416 00:19:19,240 --> 00:19:19,760 예. 417 00:19:19,760 --> 00:19:22,820 >> 학생 : 그래서 당신이 해야하는 경우 단지 전에 일반에 무료로 418 00:19:22,820 --> 00:19:25,490 프로그램은 경우에 그 의미 하는가, 종료 프로그램을 종료하고 당신이 그것을 해제하지 않습니다, 419 00:19:25,490 --> 00:19:27,580 그 메모리는 여전히 할당? 420 00:19:27,580 --> 00:19:31,330 >> 제이슨 허쉬 호른 : 프로그램이 종료되면 당신은 뭔가를 무료로 잊지 421 00:19:31,330 --> 00:19:34,390 그 메모리는 전체에 할당 된 프로그램의 수명. 422 00:19:34,390 --> 00:19:37,670 프로그램이 완전히 닫힐 때 그 기억은하지 않을 것입니다 423 00:19:37,670 --> 00:19:39,490 영원히 머물. 424 00:19:39,490 --> 00:19:42,080 컴퓨터가 알만큼 똑똑하다 그 프로그램이 종료 할 때, 425 00:19:42,080 --> 00:19:46,440 모든 메모리를 제거해야한다는 이 프로그램과 관련되었다. 426 00:19:46,440 --> 00:19:51,240 >> 그러나 실행할 수있는 도구가 있습니다 탐지하는 프로그램에서, 만약 때 427 00:19:51,240 --> 00:19:54,720 프로그램은 잊었 완료 일부 메모리를 해제. 428 00:19:54,720 --> 00:19:57,960 그리고 당신의 다음 문제에 대한 위치 설정 당신의 malloc를 사용하여 사용할 것 429 00:19:57,960 --> 00:20:02,610 포인터는,이 실행됩니다 있는지 확인하기 위해 프로그램에 대한 프로그램, 430 00:20:02,610 --> 00:20:06,530 때 주요 반환, 당신은 몇 가지가 있었다 똑 같이 남겨진 것들. 431 00:20:06,530 --> 00:20:09,130 >> 그래서 그들은 malloc으로 할당 된 유지하지 않을거야 영원히 당신의 컴퓨터에있는. 432 00:20:09,130 --> 00:20:11,720 즉, 낭비입니다 때문에 매우 빠르게, 컴퓨터 433 00:20:11,720 --> 00:20:12,960 메모리가 부족합니다. 434 00:20:12,960 --> 00:20:16,450 그러나 그들은 당신이 끝날 때까지 실행하는 경우 프로그램 그들은 해제 및 않는다 당신의 435 00:20:16,450 --> 00:20:20,260 프로그램은 여전히​​ 문제의, 종료 이 도구가 도움이 될 것이라고 당신이 해결합니다. 436 00:20:20,260 --> 00:20:21,520 >> 학생 : Valgrind의는 무엇입니까? 437 00:20:21,520 --> 00:20:22,910 >> 제이슨 허쉬 호른 : 그건 Valgrind의했다. 438 00:20:22,910 --> 00:20:23,520 그리고 당신은 할 수 있습니다 - 439 00:20:23,520 --> 00:20:25,780 >> 학생 : 그러나 우리는 알 필요가 없습니다 그 퀴즈,하지만? 440 00:20:25,780 --> 00:20:27,600 내 말은, 그것은 이야기했다 강의에 조금. 441 00:20:27,600 --> 00:20:33,600 >> 제이슨 허쉬 호른 : 그래서 Valgrind의 해당 도구의 이름입니다. 442 00:20:33,600 --> 00:20:37,180 그것이 무엇을 아는 것은 퀴즈 충분. 443 00:20:37,180 --> 00:20:40,200 하지만 당신은에 아직 사용하지 않은 당신의 우리가 가지고하지 않았기 때문에 문제가 설정 444 00:20:40,200 --> 00:20:43,520 명시 적으로 처리하고있다 문제 세트 malloc에​​ 또는 당신의 malloc를 사용하여. 445 00:20:43,520 --> 00:20:45,330 그래서 당신은 아직 Valgrind의를 사용하지 않았습니다. 446 00:20:45,330 --> 00:20:47,760 하지만 당신은 빨리 그것을 사용합니다 나중에보다는 오히려. 447 00:20:47,760 --> 00:20:48,710 >> 학생 : 당신은 반복 할 수 있습니다 무엇 Valgrind의는? 448 00:20:48,710 --> 00:20:49,190 >> 제이슨 허쉬 호른 : 죄송합니다? 449 00:20:49,190 --> 00:20:51,240 >> 학생 : 당신은 무엇을 반복 할 수 있습니다 Valgring의 목적은? 450 00:20:51,240 --> 00:20:53,100 >> 제이슨 허쉬 호른 : Valgrind의 이름입니다 - 451 00:20:53,100 --> 00:20:59,890 GDB는, 당신은 당신의 프로그램을 디버깅하는 데 도움이 같은 Valgrind의 당신이 파악하는 데 도움이되는 경우 452 00:20:59,890 --> 00:21:03,210 상황이 해제되지 않은 프로그램이 종료 할 때. 453 00:21:03,210 --> 00:21:05,110 그래서 당신은 당신의 프로그램에서 실행됩니다. 454 00:21:05,110 --> 00:21:09,230 그리고 프로그램이 종료, 그것은 말할 것 프로그램은 malloc에​​이 많은라고 455 00:21:09,230 --> 00:21:13,670 이 바이트에 대한 시간, 그리고 단지이 많은 시간은 무료했다. 456 00:21:13,670 --> 00:21:16,520 그리고 이러한 바이트를 왼쪽으로 해제되지 않고. 457 00:21:16,520 --> 00:21:18,050 아니면 당신이 모든 것을 해제 있다고 말할 수 있습니다. 458 00:21:18,050 --> 00:21:19,070 잘 했어. 459 00:21:19,070 --> 00:21:19,480 >> 학생 : OK. 460 00:21:19,480 --> 00:21:21,060 그리고 그것은 Valgring라고? 461 00:21:21,060 --> 00:21:24,940 >> 제이슨 허쉬 호른 : V-A-L-G-R-I-N-D. 462 00:21:24,940 --> 00:21:25,970 >> 학생 : 포인터에 대한 질문. 463 00:21:25,970 --> 00:21:30,080 그래서 만약 당신이 N 스타했다고 밝혔습니다 X는 무엇인가 같습니다. 464 00:21:30,080 --> 00:21:33,330 즉, 퍼팅 무엇 이건, 동일 거기는 무슨 일이 안에 넣어되는 것입니다 465 00:21:33,330 --> 00:21:36,120 어떤 X가 가리키는, 또는 X의 포인터? 466 00:21:36,120 --> 00:21:37,690 >> 제이슨 허쉬 호른 : 당신은 할 수 질문을 반복? 467 00:21:37,690 --> 00:21:39,340 당신이 말을하는 동안 우리가 그릴 수 있습니까? 468 00:21:39,340 --> 00:21:42,710 >> 학생 : 퀴즈, 실제로, 당신이 우리를 보낸 사람은, 그것은 문자 같았다 469 00:21:42,710 --> 00:21:46,520 스타의 진실, 오른쪽 CS50 바위 같다? 470 00:21:46,520 --> 00:21:52,190 그래서 의미 않는 그 CS50 바위 진리가 가리키는 무엇인가? 471 00:21:52,190 --> 00:21:55,810 >> 제이슨 허쉬 호른 : 그래서 당신이 얘기 문자열에 문자 스타에 대한 방법 472 00:21:55,810 --> 00:21:56,460 그 작품? 473 00:21:56,460 --> 00:21:56,890 그래. 474 00:21:56,890 --> 00:21:57,700 OK. 475 00:21:57,700 --> 00:21:59,140 여기서 이상이를 그려 보자. 476 00:21:59,140 --> 00:22:07,100 >> [사이드 CONVERSATION] 477 00:22:07,100 --> 00:22:11,130 >> 제이슨 허쉬 호른 : 그래서이 변수 char 형 스타가 될 것입니다. 478 00:22:11,130 --> 00:22:14,580 변수는 얼마나 큰 char 형 스타? 479 00:22:14,580 --> 00:22:15,510 얼마나 많은 바이트? 480 00:22:15,510 --> 00:22:16,450 >> 학생 : 네. 481 00:22:16,450 --> 00:22:18,210 >> 제이슨 허쉬 호른 : 그것은 4 바이트입니다. 482 00:22:18,210 --> 00:22:21,420 변수는 얼마나 많은 권리입니다 int 형 스타? 483 00:22:21,420 --> 00:22:22,210 >> 학생 : 네. 484 00:22:22,210 --> 00:22:24,910 >> 제이슨 허쉬 호른 : 4 바이트. 485 00:22:24,910 --> 00:22:28,280 이 포인터 있다면, 그것은 항상 4 바이트 때문에 포인터 그들의 486 00:22:28,280 --> 00:22:30,070 값은 메모리 주소이다. 487 00:22:30,070 --> 00:22:35,160 그리고 CS50의 메모리 주소 장비는 4 바이트 길이입니다. 488 00:22:35,160 --> 00:22:42,900 그래서 우리가하는 GetString 때, 또는 우리를 호출 할 때 말하자면, 문자열 이름은에서 다음에 해당하고, 489 00:22:42,900 --> 00:22:46,140 큰 따옴표는 문자열을 넣어, 우리는 퍼팅 - 490 00:22:46,140 --> 00:22:46,920 음, 그건 좀 다릅니다. 491 00:22:46,920 --> 00:22:48,630 우리는 예를 들어, getString에 할 것이다. 492 00:22:48,630 --> 00:22:52,150 또는 문자 스타 일 문자열 같습니다. 493 00:22:52,150 --> 00:22:54,360 죄송합니다, 나에게 예제를 제공 당신은 읽어? 494 00:22:54,360 --> 00:22:57,590 >> 학생 : 문자 스타의 진실은 동일 따옴표 "CS50 바위". 495 00:22:57,590 --> 00:23:02,260 >> 제이슨 허쉬 호른 : 그래서이 별이 우리는이 변수 x를 부를 것 우리의 496 00:23:02,260 --> 00:23:04,060 일반적인 목적. 497 00:23:04,060 --> 00:23:05,970 우리는 X라는 변수를 만들었습니다. 498 00:23:05,970 --> 00:23:07,610 그것은 char 형 스타입니다. 499 00:23:07,610 --> 00:23:10,950 이 시리즈에 대한 포인터 문자. 500 00:23:10,950 --> 00:23:12,200 그래서 여기까지 - 501 00:23:12,200 --> 00:23:23,710 502 00:23:23,710 --> 00:23:25,890 >> 그래서이 방법이이 것입니다 메모리에서 작동합니다. 503 00:23:25,890 --> 00:23:27,410 이 메모리 어드레스를 저장하는 것이다. 504 00:23:27,410 --> 00:23:31,770 이 메모리 어드레스의 저장 것 배열의 첫 번째 문자. 505 00:23:31,770 --> 00:23:33,830 그리고 그 때 당신은 다음에 포인터, 당신은 것 506 00:23:33,830 --> 00:23:35,200 첫 번째 문자를 얻을. 507 00:23:35,200 --> 00:23:38,780 >> 그리고 당신처럼이 일을 읽는다면 문자열은 컴퓨터가 스마트 508 00:23:38,780 --> 00:23:42,930 아는 것만으로는 충분이 전체를 읽어 그것은 반발 0에 도달 할 때까지. 509 00:23:42,930 --> 00:23:45,530 하지만 당신은에 그것을 문자를 읽는다면 시간은, 그래서 당신은 반복입니다 510 00:23:45,530 --> 00:23:49,910 이 캐릭터는, 당신은 단지를 읽 한 번에 문자가 나타날 때까지 511 00:23:49,910 --> 00:23:50,850 백 슬래시 0. 512 00:23:50,850 --> 00:23:52,335 즉, 응답하지 않을 수 있습니다 귀하의 질문,하지만. 513 00:23:52,335 --> 00:23:55,610 >> 학생 : 네,하지만 당신이하지 않은 malloc으로 할당하는 공간 514 00:23:55,610 --> 00:23:58,400 아직 그 포인터. 515 00:23:58,400 --> 00:24:02,510 >> 제이슨 허쉬 호른 : 그래서 꽤 확실하지 않다 정확히 당신이보고있는, 516 00:24:02,510 --> 00:24:03,640 나는 그 퀴즈를하지 않았기 때문입니다. 517 00:24:03,640 --> 00:24:06,370 그건 도움이 될했는데 다른 TF에서 자원. 518 00:24:06,370 --> 00:24:11,380 당신은에 문자열을 작성하는 경우 스택 또는 지역 변수로, 그것은거야 519 00:24:11,380 --> 00:24:16,920 다만 전하의 배열이 아닌 수 가리키는 일반적으로 문자 스타 520 00:24:16,920 --> 00:24:18,600 다른 문자열. 521 00:24:18,600 --> 00:24:20,550 하지만 난 모르겠어요. 522 00:24:20,550 --> 00:24:25,065 즉, 다른 포인터가 될 수 스택에 문자열뿐만 아니라. 523 00:24:25,065 --> 00:24:27,240 그래. 524 00:24:27,240 --> 00:24:31,116 >> 학생 : 당신이 할 필요가 있다는 것을 알고 포인터 인 경우 메모리를 할당 525 00:24:31,116 --> 00:24:33,360 내부 선언지고 또 다른 기능. 526 00:24:33,360 --> 00:24:36,740 당신은 만약 같은 일을 할 필요가 메인의 안쪽에 선언되는, 527 00:24:36,740 --> 00:24:39,570 당신은 메인의 안쪽에 사용하는? 528 00:24:39,570 --> 00:24:43,590 >> 제이슨 허쉬 호른 : 그래서 그래. 529 00:24:43,590 --> 00:24:46,670 당신은 어떤에 대한 포인터를 선언 할 수 있습니다 메모리의 메모리 주소. 530 00:24:46,670 --> 00:24:51,440 그것은 지역의 메모리 주소가 될 수 있습니다 변수, 자주하지만, 531 00:24:51,440 --> 00:24:55,760 사람들은 메모리 주소를 선언하지 그들이 이동하기 때문에 지역 변수 532 00:24:55,760 --> 00:24:59,890 그 함수가 반환 멀리하면, 어떤 우리가 일반적으로 물건을 MALLOC 이유입니다. 533 00:24:59,890 --> 00:25:04,630 하지만 그래, 당신은 포인터를 선언 할 수 있습니다 다른 지역 변수. 534 00:25:04,630 --> 00:25:06,360 그것은 단지 일반적으로 수행 아니에요. 535 00:25:06,360 --> 00:25:09,480 하지만 난 그에서 좀 걸릴 수 있습니다 클래스 후 특정 일. 536 00:25:09,480 --> 00:25:10,650 그래. 537 00:25:10,650 --> 00:25:12,350 >> 학생 :이 종류의 생각 뭘 바라는지의. 538 00:25:12,350 --> 00:25:16,930 이 초기화되는 이상한 보인다 하지로의 포인터 539 00:25:16,930 --> 00:25:20,760 주소,하지만 같은 것을 값처럼 보인다. 540 00:25:20,760 --> 00:25:25,970 CS50 안에 무엇이있는 것처럼 보인다 점은 지적하고되고 541 00:25:25,970 --> 00:25:28,820 하지 실제 주소, 오른쪽? 542 00:25:28,820 --> 00:25:30,520 >> 제이슨 허쉬 호른 : 그래서의 없는 경우, 그래도. 543 00:25:30,520 --> 00:25:32,470 즉, 무슨 일이 아니다. 544 00:25:32,470 --> 00:25:35,910 당신은 문자 별을 선언 할 때, 그것은 메모리 어드레스이다. 545 00:25:35,910 --> 00:25:38,860 포인터는 모든 메모리 주소입니다 다른 것을 가리키는. 546 00:25:38,860 --> 00:25:41,480 다른 그 무엇인가에있을 수 스택,하지만 거의 항상에 547 00:25:41,480 --> 00:25:43,440 우리가 사용하는 볼 방법으로 힙. 548 00:25:43,440 --> 00:25:46,860 549 00:25:46,860 --> 00:25:53,500 하지만 문자열 이름은 큰 따옴표와 동일 "getString는"우리는 볼 수 있습니다 그리고 우리 550 00:25:53,500 --> 00:25:55,010 이를 통해보고하고 코딩 할 수 있습니다. 551 00:25:55,010 --> 00:26:01,190 getString에 문자열이 저장되지 않는 그 변수, 또는 어떤 문자열 552 00:26:01,190 --> 00:26:04,580 이름이 저장되지 않고있다 변수, 그 때문에 어떻게하지 553 00:26:04,580 --> 00:26:06,070 포인터는 작동합니다. 554 00:26:06,070 --> 00:26:06,770 그 의미가 있습니까? 555 00:26:06,770 --> 00:26:07,170 >> 학생 : 네. 556 00:26:07,170 --> 00:26:08,570 >> 제이슨 허쉬 호른 : OK. 557 00:26:08,570 --> 00:26:11,690 바라 건데, 그게 아니었다 사람에게 혼란. 558 00:26:11,690 --> 00:26:15,732 그것이 있다면, 우리는 다시 볼 수 있습니다 조금의, 우리가 실제로거야 때문에 559 00:26:15,732 --> 00:26:19,240 희망을 갖고 무언가를 코딩 문자열과 함께 작업하고 느낄 수 있도록 도와 560 00:26:19,240 --> 00:26:22,170 그들과 함께 더 편안합니다. 561 00:26:22,170 --> 00:26:24,869 >> 이들과 관련된 다른 질문 주제 또는 다른 주제에 그 562 00:26:24,869 --> 00:26:26,119 나는 백업을 놓을 게요? 563 00:26:26,119 --> 00:26:32,280 564 00:26:32,280 --> 00:26:34,840 그리고 - 565 00:26:34,840 --> 00:26:36,310 지금. 566 00:26:36,310 --> 00:26:37,630 예, 알덴. 567 00:26:37,630 --> 00:26:39,860 >> ALDEN : 그래서이 완전히 관련이없는, 그러나 우리는 단지에 갈 수 있습니다 568 00:26:39,860 --> 00:26:42,760 정말 빨리 우리가 알아야 할 사항 (32)과의 차이에 대해 569 00:26:42,760 --> 00:26:46,345 64 비트 컴퓨터? 570 00:26:46,345 --> 00:26:47,740 >> 제이슨 허쉬 호른 : 예. 571 00:26:47,740 --> 00:26:52,111 그래서 32 비트 얼마나 많은 바이트? 572 00:26:52,111 --> 00:26:53,060 >> ALDEN : 그것은 4 바이트입니다. 573 00:26:53,060 --> 00:26:54,360 >> 제이슨 허쉬 호른 : 그것은 4 바이트입니다. 574 00:26:54,360 --> 00:26:58,420 그리고 64 비트는 얼마나 많은 바이트? 575 00:26:58,420 --> 00:26:59,112 >> 학생 : 8입니다. 576 00:26:59,112 --> 00:27:00,610 >> 제이슨 허쉬 호른 : 8 바이트. 577 00:27:00,610 --> 00:27:03,980 그래서 다시, 8 비트는 한 바이트이다. 578 00:27:03,980 --> 00:27:08,340 귀하의 CS50기구입니다 32 비트 시스템. 579 00:27:08,340 --> 00:27:13,650 그래서 메모리 주소는 긴 4 바이트. 580 00:27:13,650 --> 00:27:17,460 2는 32에 있습니다 메모리 주소. 581 00:27:17,460 --> 00:27:21,310 0 32 - 1에 2. 582 00:27:21,310 --> 00:27:27,630 그리고 나는 긍정적 아니지만, 그건 당신이 무엇을 필요 아마 범위 583 00:27:27,630 --> 00:27:35,230 32 비트 컴퓨터에 대해 알고 메모리 주소는 다시 4 바이트 길이입니다 584 00:27:35,230 --> 00:27:39,620 그리고 그 최대 금액의 메모리 주소. 585 00:27:39,620 --> 00:27:41,680 >> 또한, 데이터 타입 - 586 00:27:41,680 --> 00:27:45,020 이는있을 수도 있습니다 그럼 주목할 가치가있다. 587 00:27:45,020 --> 00:27:49,610 데이터 형식의 크기에 따라 달라집니다 당신이 작업하고있는 기계. 588 00:27:49,610 --> 00:27:56,760 그래서 문자, 하나의 문자는 어떻게 우리 CS50 어플라이언스 바이트? 589 00:27:56,760 --> 00:27:57,980 한 바이트. 590 00:27:57,980 --> 00:28:02,310 그리고 실제로는 하나의 바이트로의 또한 64 비트 컴퓨터에. 591 00:28:02,310 --> 00:28:05,920 >> 대부분의 데이터 타입은 동일한 수있다 두 컴퓨터에서 바이트. 592 00:28:05,920 --> 00:28:11,620 그러나 일부 데이터 형식이 다를 수 두 시스템에. 593 00:28:11,620 --> 00:28:14,590 그래서 잠재적 것 당신이 알 필요가있는 유일한 것은. 594 00:28:14,590 --> 00:28:16,710 >> 그러나 심지어는, 제가 생각하기에, 경계를 넘어 - 595 00:28:16,710 --> 00:28:20,990 다시 보면 나는 거의 확실 해요 이전 퀴즈에, 그것은 말한다, 대한 가정 596 00:28:20,990 --> 00:28:24,090 당신이 사용하는 코딩 문제 32 비트 시스템. 597 00:28:24,090 --> 00:28:26,620 598 00:28:26,620 --> 00:28:30,620 그러나에 그와 함께 가고, 거기 당신이 관심이있는 경우가 있습니다 599 00:28:30,620 --> 00:28:35,920 동일한 데이터 유형 모든 시스템에서 크기. 600 00:28:35,920 --> 00:28:42,670 >> 당신이 뭔가를 본 적이 있다면 uint32_t, 당신은 수도 있고 수도 601 00:28:42,670 --> 00:28:43,260 그 보았다 없습니다. 602 00:28:43,260 --> 00:28:44,290 즉, 데이터 형식입니다. 603 00:28:44,290 --> 00:28:47,570 즉, 32 비트 상관없이 할 말있다 이 무슨 컴퓨터에 있습니다. 604 00:28:47,570 --> 00:28:50,350 그래서 사람들은 휴대용을 작성하는 경우 코드, 그들은 아마 정수를 사용하지 않습니다. 605 00:28:50,350 --> 00:28:53,260 그들은 대신에 다른 데이터를 사용합니다 그들이 알고있는 유형은 동일합니다 606 00:28:53,260 --> 00:28:54,780 모든 단일 시스템에서 크기. 607 00:28:54,780 --> 00:28:58,080 608 00:28:58,080 --> 00:28:58,250 Madhu. 609 00:28:58,250 --> 00:29:00,150 >> MADHU : 나는에 대한 질문을했다 컴파일 과정. 610 00:29:00,150 --> 00:29:04,110 그래서 당신이 사용하는 프로그램을 작성하는 경우 CS50이나 뭐 같은 라이브러리 611 00:29:04,110 --> 00:29:06,840 그런 식으로, 내가 알고 해당 라이브러리 어떤 시점에서,이어야 612 00:29:06,840 --> 00:29:08,590 컴파일 안으로 연결 613 00:29:08,590 --> 00:29:13,380 하지만 얼마나 그 중에 발생 프로그램의 컴파일? 614 00:29:13,380 --> 00:29:15,880 해당 라이브러리 과정의 어떤 부분 당신이있을 때 발생합니다 615 00:29:15,880 --> 00:29:18,560 자신의 프로그램을 컴파일? 616 00:29:18,560 --> 00:29:24,020 >> 제이슨 허쉬 호른 : 그럼 해보자 이 과정의 일반적 단계. 617 00:29:24,020 --> 00:29:26,280 당신은 당신의. C 파일을 작성합니다. 618 00:29:26,280 --> 00:29:33,530 당신의. C 파일에서 #을 포함하여 헤더 라이브러리, 예를 들면, cs50.h. 619 00:29:33,530 --> 00:29:39,480 샤프 포함하는 것이 무엇을 수행 라인은 프로그램에 무엇입니까? 620 00:29:39,480 --> 00:29:40,525 Akchar. 621 00:29:40,525 --> 00:29:43,350 >> AKCHAR : 그것은의 프로토 타입을 추가 헤더의 기능 622 00:29:43,350 --> 00:29:45,120 라이브러리에있는 파일입니다. 623 00:29:45,120 --> 00:29:45,600 >> 제이슨 허쉬 호른 : 그렇지. 624 00:29:45,600 --> 00:29:49,870 그것은 그 함수 프로토 타입을 추가 코드에. 625 00:29:49,870 --> 00:29:55,230 코드는 컴파일되고 그래서 때 초기 단계, 컴파일러는 알고있다 626 00:29:55,230 --> 00:29:59,250 이러한 기능은 실제로 존재하고 있음을 그 어딘가가 정의되어 있습니다. 627 00:29:59,250 --> 00:30:02,460 . h 파일에 포함되지 않습니다 이러한 기능에 대한 정의 나 방법 628 00:30:02,460 --> 00:30:03,950 그들은 실제로 작동합니다. 629 00:30:03,950 --> 00:30:07,960 Cs50.h은 말한다 뭔가를 포함 하는 GetString는 진짜입니다 630 00:30:07,960 --> 00:30:09,270 발생할 수 있습니다. 631 00:30:09,270 --> 00:30:14,240 그리고 standardio.h는 printf의가 말한다 일어날 수있는 실제 물건. 632 00:30:14,240 --> 00:30:23,190 >> 그래서이와 함께 C 언어. 헤더 파일은 몇 가지로 설정됩니다 633 00:30:23,190 --> 00:30:27,750 기계 - 판독 가능한 코드, 이는 결국 바이너리로 전환됩니다 634 00:30:27,750 --> 00:30:30,030 코드, 0과 1. 635 00:30:30,030 --> 00:30:33,590 그리고 그 코드의 그 궁극적으로 실행됩니다. 636 00:30:33,590 --> 00:30:38,550 - 난 CS50 라인 - 예를 들어, 당신은 연타를 작성하는 경우 - 637 00:30:38,550 --> 00:30:41,830 다음는-L을 CS50를, 당신은 안으로 그 입력 638 00:30:41,830 --> 00:30:42,180 그리고 당신은을 참조하십시오. 639 00:30:42,180 --> 00:30:43,890 당신이 만드는 쓸 때, 당신은거야 여기까지 그 라인을 참조하십시오. 640 00:30:43,890 --> 00:30:47,740 그리고 우리는 두 번째에있는 것을 볼 수 있습니다 때 우리는 코드 또는 나중에 때 우리의 코드에. 641 00:30:47,740 --> 00:30:50,390 >> 하지만 - 난 CS50 라인은 무언가를 보다 약간 다른 642 00:30:50,390 --> 00:30:52,440 #은 cs50.h. 포함 643 00:30:52,440 --> 00:30:56,300 그-L의 CS50 라인은 무엇입니까? 644 00:30:56,300 --> 00:30:56,820 아비? 645 00:30:56,820 --> 00:31:00,310 >> AVI : 나는 그것이 링크라고 할 함수 라이브러리 646 00:31:00,310 --> 00:31:02,710 . 오 파일처럼 호출합니다. 647 00:31:02,710 --> 00:31:08,200 >> 제이슨 허쉬 호른 : 그래서 매우 가까운 자리 -에하지 않을 경우. 648 00:31:08,200 --> 00:31:16,220 - 난 CS50는 바이너리 파일을 받아 바이너리 파일로 병합합니다. 649 00:31:16,220 --> 00:31:21,410 그래서 cs50.h 터닝 아무 소용이 없다 모든를 이진수로 C 언어에서 cs50.h 650 00:31:21,410 --> 00:31:23,130 그것이 사용되는 싱글 시간. 651 00:31:23,130 --> 00:31:26,650 즉, 바보 같은 것 때문에 그 많은 시간을 낭비한다. 652 00:31:26,650 --> 00:31:30,420 따라서 이미 컴파일 된 및 실행 파일로 설정. 653 00:31:30,420 --> 00:31:35,430 그리고 지금은 합병 될 것입니다 끝 부분에 파일로. 654 00:31:35,430 --> 00:31:38,370 그래서 그 일의의와 공의는거야 당신의 사람과 병합 655 00:31:38,370 --> 00:31:39,150 그리고 끝에 0의. 656 00:31:39,150 --> 00:31:43,670 그래서 지금 당신은 실제로 실제있을 것이다 1과 0의 방법을 사용하여 GetString을 정의하는, 657 00:31:43,670 --> 00:31:47,890 예를 들어, 작동 또는 방법의 printf 예를 들어, 작동한다. 658 00:31:47,890 --> 00:31:52,750 >> 그리고 자세한 내용은, 거기에 네이트는 것을주는 짧은 컴파일러 659 00:31:52,750 --> 00:31:55,410 당신은 간다 확인해야 이 단계를 통해. 660 00:31:55,410 --> 00:31:56,050 그러나 - 661 00:31:56,050 --> 00:31:56,560 예. 662 00:31:56,560 --> 00:32:01,700 >> 학생 : 그들은 항상 있습니까 O 파일. 그들은 라이브러리 형태로있을 때, 663 00:32:01,700 --> 00:32:06,764 같은 - 연결, 통합 준비 그들은 바이너리 코드에있어? 664 00:32:06,764 --> 00:32:07,600 >> 제이슨 허쉬 호른 : OK. 665 00:32:07,600 --> 00:32:08,420 무엇 - 666 00:32:08,420 --> 00:32:11,780 >> 학생 : 그게 항상의 경우 도서관은 당신이 그들을 연결할 때? 667 00:32:11,780 --> 00:32:12,500 >> 제이슨 허쉬 호른 : 예. 668 00:32:12,500 --> 00:32:17,300 그래서.들 수 있습니다 이미지, 거기에 또한있을 것입니다 기계 코드, 669 00:32:17,300 --> 00:32:17,975 당신에게 비밀. 670 00:32:17,975 --> 00:32:19,410 당신은 그에 대해 걱정할 필요가 없습니다. 671 00:32:19,410 --> 00:32:24,930 그러나 일반적으로, 그래, 그들은거야 O 갈 준비가 파일을합니다.합니다. 672 00:32:24,930 --> 00:32:27,170 >> 학생 : 그래서 당신을 발송할 때 라이브러리는, 당신은 발송 하는가 673 00:32:27,170 --> 00:32:28,880 . h와. 오? 674 00:32:28,880 --> 00:32:32,210 당신은. c 또는.의를 발송하지 않는다. 675 00:32:32,210 --> 00:32:33,070 >> 제이슨 허쉬 호른 : 그래서 - 676 00:32:33,070 --> 00:32:36,260 그리고이 경우뿐만 아니라,이 짧은에 이러한 정보는보기 오는 것으로 보인다 677 00:32:36,260 --> 00:32:36,700 조금 빨리. 678 00:32:36,700 --> 00:32:39,870 그러나 컴파일러의 짧은 이에 대해 이야기뿐만 아니라. 679 00:32:39,870 --> 00:32:43,290 당신이 라이브러리를 발송할 경우, 경우에 발송 . 시간, 헤더 파일, 그 680 00:32:43,290 --> 00:32:46,290 함수 프로토 타입, 그리고 1과 0의를, 그건 당신이 줄 필요가 전부입니다. 681 00:32:46,290 --> 00:32:50,640 당신은 줄 필요가없는 방법 기능은. C 파일을 작동합니다. 682 00:32:50,640 --> 00:32:56,360 때문에 추상화의 지점 또는 API를 지적,이 SPL의 점, 683 00:32:56,360 --> 00:32:59,650 스탠포드 휴대용 라이브러리, 그것의 당신은 걱정하기위한 방법에 새로운 684 00:32:59,650 --> 00:33:04,220 GRect는, 작동 또는 작동 방법 이동 방법이나 작품을 추가합니다. 685 00:33:04,220 --> 00:33:06,520 당신이 알아야 할 모든 것을 추가합니다 당신이 할 수있는 기능입니다 686 00:33:06,520 --> 00:33:08,880 사용하고,이 작업을 수행합니다. 687 00:33:08,880 --> 00:33:12,760 그래서 당신이 정말로 알 필요가 없습니다 방법 이 C. 당신에 쓰여은 필요 688 00:33:12,760 --> 00:33:15,460 알고, 여기에 기능은, 그들이 수행하고, 여기에 1과 0은 689 00:33:15,460 --> 00:33:18,870 당신이 정말로 그들을 사용하려는 경우. 690 00:33:18,870 --> 00:33:19,530 >> 쿨. 691 00:33:19,530 --> 00:33:26,980 컴파일러에 더 이상 질문 또는 보드에 다른 주제? 692 00:33:26,980 --> 00:33:30,300 >> 학생 : 나는 질문이 재귀 기능을 구현. 693 00:33:30,300 --> 00:33:31,170 재귀에 대한 질문. 694 00:33:31,170 --> 00:33:33,030 나는 올 것이다 느낌을 가지고 있었다. 695 00:33:33,030 --> 00:33:38,310 그래서 신속하게 통 특정와 재귀 696 00:33:38,310 --> 00:33:40,690 예를 들어, 계승 함수입니다. 697 00:33:40,690 --> 00:33:44,920 이것은 예를 들어 있기 때문에 그 자주 등장하거나 사용 698 00:33:44,920 --> 00:33:46,170 재귀를 설명하기 위해. 699 00:33:46,170 --> 00:33:52,390 700 00:33:52,390 --> 00:33:56,410 >> 그래서 "네!" 4 요인으로 읽을 수 있습니다. 701 00:33:56,410 --> 00:33:59,120 4 요인은 무엇을 의미합니까? 702 00:33:59,120 --> 00:34:00,696 그 기능은 무엇입니까? 703 00:34:00,696 --> 00:34:02,235 어떻게 4 계승을 계산합니까? 704 00:34:02,235 --> 00:34:05,250 705 00:34:05,250 --> 00:34:07,960 4 회 3 회 2 회 1. 706 00:34:07,960 --> 00:34:11,889 >> 4 계승을 작성하는 그래서 다른 방법 이를 작성하는 것입니다. 707 00:34:11,889 --> 00:34:16,780 708 00:34:16,780 --> 00:34:19,022 4 회 3 계승. 709 00:34:19,022 --> 00:34:22,080 3 요인이기 때문에 3 회 2 회 1. 710 00:34:22,080 --> 00:34:27,580 그래서 4 회 3 요인은 4입니다 회 3 회 2 회 1. 711 00:34:27,580 --> 00:34:32,679 요인이 큰 이유입니다 재귀 후보, 그것 때문에 712 00:34:32,679 --> 00:34:36,630 뭔가가 분명히 있음을 에 이상 이상 이상 발생 713 00:34:36,630 --> 00:34:39,820 사물의 작은 숫자까지 당신은 끝에 도달. 714 00:34:39,820 --> 00:34:42,570 당신이 1에 도달하면, 1 요​​인은 1입니다. 715 00:34:42,570 --> 00:34:43,719 당신은 훨씬 더 갈 수 없습니다. 716 00:34:43,719 --> 00:34:47,219 0 팩토리얼은 1로 정의된다. 717 00:34:47,219 --> 00:34:50,679 당신이 1 또는 0으로 얻을 때, 당신이있어 마지막에, 당신은 할 수 있습니다 718 00:34:50,679 --> 00:34:53,219 다시 올라가고 시작합니다. 719 00:34:53,219 --> 00:34:59,540 우리는 재귀를 쓰고 싶다 그래서 경우 계승을 계산하는 기능, 720 00:34:59,540 --> 00:35:02,170 우리는 몇 가지를 작성하는거야 그 지금은 의사. 721 00:35:02,170 --> 00:35:03,300 우리는 의사 코드를 작성하기 전에 - 722 00:35:03,300 --> 00:35:05,660 나는 너희들에게 몇 분을 줄 것이다 의사 코드를 작성하거나 생각하는 723 00:35:05,660 --> 00:35:09,600 그것에 대해 - 매 2 가지가 있습니다 재귀 함수가 필요합니다. 724 00:35:09,600 --> 00:35:12,530 그 두 가지가 무엇입니까? 725 00:35:12,530 --> 00:35:13,220 >> JACK : 그것은 자신을 호출 할 수 있습니다. 726 00:35:13,220 --> 00:35:13,680 >> 제이슨 허쉬 호른 : 노아? 727 00:35:13,680 --> 00:35:14,460 오, 잭. 728 00:35:14,460 --> 00:35:15,100 어서. 729 00:35:15,100 --> 00:35:16,640 >> JACK : 그것은 자신을 호출 할 수 있습니다. 730 00:35:16,640 --> 00:35:19,220 >> 제이슨 허쉬 호른 : 그래서 재귀 함수, 재귀 호출을 필요 731 00:35:19,220 --> 00:35:20,220 자신을 호출합니다. 732 00:35:20,220 --> 00:35:20,770 그 하나입니다. 733 00:35:20,770 --> 00:35:21,510 그리고 다른 점은 무엇입니까? 734 00:35:21,510 --> 00:35:22,250 >> JACK : 기본 케이스. 735 00:35:22,250 --> 00:35:23,780 >> 제이슨 허쉬 호른 : 기본 케이스. 736 00:35:23,780 --> 00:35:26,940 기본 케이스는 우리가 중지 할 때 여기에 있습니다. 737 00:35:26,940 --> 00:35:29,510 따라서 함수가 호출됩니다. 738 00:35:29,510 --> 00:35:31,410 기본 케이스가 먼저 온다. 739 00:35:31,410 --> 00:35:33,710 당신은 당신이 마지막에 있다면 알고 싶어요. 740 00:35:33,710 --> 00:35:37,110 그리고, 마지막에 당신이하지 않은 경우 재귀 호출을 확인합니다. 741 00:35:37,110 --> 00:35:39,880 그리고, 다시이 기능을 통해 이동 다시 기본 케이스를 확인합니다. 742 00:35:39,880 --> 00:35:42,575 당신이 종료하지 않은 경우, 당신은 할 다른 재귀 호출, 743 00:35:42,575 --> 00:35:44,130 기타 등등, 등등. 744 00:35:44,130 --> 00:35:47,110 >> 그 이유는 재귀 함수 항상 그 기본의 경우 그 필요 745 00:35:47,110 --> 00:35:48,210 재귀 호출. 746 00:35:48,210 --> 00:35:51,280 당신은 재귀 호출이없는 경우, 재귀 함수 없을 것입니다. 747 00:35:51,280 --> 00:35:53,210 당신은 기본 케이스를 가지고 있지 않은 경우, 당신은 영원히 갈 것 748 00:35:53,210 --> 00:35:54,780 어떤 결말이있을 수 없을 것입니다. 749 00:35:54,780 --> 00:35:57,870 그리고 기본 케이스가 항상 먼저 온다, 당신은 항상 검사 할 것이기 때문에 750 00:35:57,870 --> 00:36:00,420 먼저 끝에 있다면. 751 00:36:00,420 --> 00:36:04,770 우리는 어떤 의사를 그래서 전에, 왜 당신이 생각하는 분을지지 않습니다 752 00:36:04,770 --> 00:36:09,360 어떻게 재귀 계승 기능 기록 할 것인가? 753 00:36:09,360 --> 00:36:23,340 754 00:36:23,340 --> 00:36:26,010 >> 또한, 당신이하고있는만큼, 쓰기 종이 한 장에 그 중입니다 755 00:36:26,010 --> 00:36:27,960 당신은해야 할 것입니다 무엇 내일 퀴즈 않습니다. 756 00:36:27,960 --> 00:36:32,160 수 있도록 그래서 아마 좋은 방법 당신이 작성하는 코드 757 00:36:32,160 --> 00:36:34,420 용지에 다운 - 758 00:36:34,420 --> 00:36:35,160 또는 당신은 할 수 있습니다. 759 00:36:35,160 --> 00:36:36,710 세미콜론이 어디에 당신은 알고있다. 760 00:36:36,710 --> 00:36:37,660 당신은 구문을 기억한다. 761 00:36:37,660 --> 00:36:40,400 당신이 할 수 없게 때문에 컴파일러는 오류가 만든 말. 762 00:36:40,400 --> 00:37:02,356 763 00:37:02,356 --> 00:37:07,240 >> 또한, 그 라인, 내일, 함께 할 때 당신이 경우 당신은 문제를 코딩 한 764 00:37:07,240 --> 00:37:11,490 시간을 급하게, 또는 당신은 매우 있다면 당신이 거 야 방법에 대한 혼란 765 00:37:11,490 --> 00:37:16,030 C에서 특정 일을 기록, 그 의사 코드를 작성하는 당신을 behoove 수 것 766 00:37:16,030 --> 00:37:18,160 나뿐만 아니라 주석을 작성합니다. 767 00:37:18,160 --> 00:37:21,940 에 대한 부분의 신용이 때문에 퀴즈에 대한 질문을 많이합니다. 768 00:37:21,940 --> 00:37:24,840 그래서 당신은 당신이 급하게, 또는 수 있습니다 다만 혼동 될 수 있습니다. 769 00:37:24,840 --> 00:37:28,030 의견이나 의사 코드 작성 자주 방법입니다 당신 770 00:37:28,030 --> 00:37:29,360 부분 점수를 얻을 수 있습니다. 771 00:37:29,360 --> 00:37:31,440 >> 그래서 뭔가를 남기지 않는 퀴즈에 빈. 772 00:37:31,440 --> 00:37:33,490 에 대한 처벌은 없다 안으로 물건을 넣어 773 00:37:33,490 --> 00:37:37,650 사실, 의사 코드 또는 퍼팅 코멘트 학년을 도울 것입니다 774 00:37:37,650 --> 00:37:40,410 당신이 실제로 알고있는 경우 알아낼 것을 당신은 아마 상을 이야기하고있어 775 00:37:40,410 --> 00:37:42,030 당신이 몇 가지 부분 점수. 776 00:37:42,030 --> 00:37:44,510 >> 또한, 그 라인을 따라, 명확하게 작성합니다. 777 00:37:44,510 --> 00:37:47,650 우리가 정말 당신이 작성하는 수없는 것을있는 경우, 우리는 당신을 호출하지 않을거야 778 00:37:47,650 --> 00:37:49,900 그림에 자정 내일 당신이 쓴 무엇인지. 779 00:37:49,900 --> 00:37:51,520 우리는 단지 포인트를 벗을 것입니다. 780 00:37:51,520 --> 00:37:56,570 그래서 우리는 오히려 듣고, 또는 수 있습니다 명확하게 쓰기, 우리는 당신이 쓴 글을 읽을 수 있습니다. 781 00:37:56,570 --> 00:38:00,230 >> 그리고 두 문장을 말한다면, 단락을 쓰지 않습니다. 782 00:38:00,230 --> 00:38:02,280 지시 사항을 따르십시오. 783 00:38:02,280 --> 00:38:03,500 명확하게 작성합니다. 784 00:38:03,500 --> 00:38:07,720 그리고 그 의견에 작성하거나 질문에 대한 의사가 할 수 785 00:38:07,720 --> 00:38:10,270 수상 부분 점수. 786 00:38:10,270 --> 00:38:12,520 >> 좋아, 계승 가자. 787 00:38:12,520 --> 00:38:15,000 그래서 우리는 기능의 요인이있다. 788 00:38:15,000 --> 00:38:18,400 789 00:38:18,400 --> 00:38:21,550 실제로 C이 작성했다, 경우 내가이 이름 앞에 둘 필요합니까 790 00:38:21,550 --> 00:38:22,800 함수의? 791 00:38:22,800 --> 00:38:24,880 792 00:38:24,880 --> 00:38:30,060 반환 형식이있는 한, 경우, 우리는 그것을 INT를 줄 것이다. 793 00:38:30,060 --> 00:38:35,450 다음 괄호 안에 있습니다 무엇을 위해 중괄호 안에 간다 794 00:38:35,450 --> 00:38:36,850 기능? 795 00:38:36,850 --> 00:38:37,950 >> 학생 : 인수 유형. 796 00:38:37,950 --> 00:38:39,150 >> 제이슨 허쉬 호른 : 인수. 797 00:38:39,150 --> 00:38:42,680 그래서 계승 것이다 아마 인수를. 798 00:38:42,680 --> 00:38:44,500 그것은 아마도 하나의 인수를합니다. 799 00:38:44,500 --> 00:38:49,450 그리고 우리는 걸릴거야 말거야 정수는 X를했다. 800 00:38:49,450 --> 00:38:52,770 그리고 또, 프로토 타입을 작성할 때 함수 또는 함수를 작성 801 00:38:52,770 --> 00:38:57,110 , 당신이 그것을 정의하기 전에 코드에서 데이터 분류와 이름을 써 802 00:38:57,110 --> 00:39:01,370 해당 기능이 변수. 803 00:39:01,370 --> 00:39:06,350 그래서 당신은이에 몇 가지 숫자를 전달할 수 있습니다 함수는 X로 지칭 될 것이다 804 00:39:06,350 --> 00:39:07,340 내부. 805 00:39:07,340 --> 00:39:08,755 >> 우리는 우리의 계승 기능이있다. 806 00:39:08,755 --> 00:39:12,030 807 00:39:12,030 --> 00:39:15,850 우리는 두 가지, 기본 케이스를 필요로 그리고 재귀 호출. 808 00:39:15,850 --> 00:39:20,900 계승에 대한 기본 케이스는 무엇입니까? 809 00:39:20,900 --> 00:39:24,850 그것을 쓴하지 않은 사람 아직 말, 기본은 무엇인가 810 00:39:24,850 --> 00:39:26,100 계승 케이스? 811 00:39:26,100 --> 00:39:28,400 812 00:39:28,400 --> 00:39:30,930 >> 학생 : N이 작은 경우 2보다 1을 반환합니다. 813 00:39:30,930 --> 00:39:33,520 >> 제이슨 허쉬 호른 : N 인 경우 2 이하, 1을 반환합니다. 814 00:39:33,520 --> 00:39:37,216 내가 좋아하는 그, 그 때문에 0과 1을 담당. 815 00:39:37,216 --> 00:39:45,290 그래서 우리는, X <2 할 1을 반환합니다. 816 00:39:45,290 --> 00:39:47,870 우리가 얻는 경우에 우리는, 0을 전달받을 경우 일 합격,이 함수는 것 817 00:39:47,870 --> 00:39:49,790 바로 1을 반환합니다. 818 00:39:49,790 --> 00:39:54,020 우리는 몇 가지 숫자 이상을 전달받을 경우 2보다 같, 우리는거야 819 00:39:54,020 --> 00:39:55,370 우리의 재귀 호출이 있습니다. 820 00:39:55,370 --> 00:39:57,855 >> 그리고 어떻게 그 일을하려고? 821 00:39:57,855 --> 00:40:01,070 수있는이 일에 다른 사람 누가 아직 얘기하지 않은 것은 나에게주는 822 00:40:01,070 --> 00:40:07,380 이 함수에 대한 재귀 호출 의사에? 823 00:40:07,380 --> 00:40:10,770 우리는 숫자를 X로 전달받을 경우 그리고이보다 크의 정보, 주변 824 00:40:10,770 --> 00:40:13,370 우리가하고 싶어? 825 00:40:13,370 --> 00:40:17,930 우리는 또한 예에 쓴 당신에게 힌트를 줄 수있는면. 826 00:40:17,930 --> 00:40:20,770 >> 학생 : X 시간 전화 X 마이너스 1의 계승? 827 00:40:20,770 --> 00:40:22,020 >> 제이슨 허쉬 호른 : 맞아 맞아. 828 00:40:22,020 --> 00:40:24,610 829 00:40:24,610 --> 00:40:37,750 우리는 X 시간을 반환하는거야 X 마이너스 1의 계승. 830 00:40:37,750 --> 00:40:41,810 그리고, 내가 쓴하더라도, 그 기본적으로, 당신이 영어라고하는 것은, 831 00:40:41,810 --> 00:40:44,580 이 계승 기능 다시 호출되는 것입니다. 832 00:40:44,580 --> 00:40:46,320 그것은 X 마이너스 1에서 실행됩니다. 833 00:40:46,320 --> 00:40:49,320 그것은 어떤 정수로 반환하고 있습니다 다음은이 두 가지를 곱합니다 834 00:40:49,320 --> 00:40:52,050 함께, 그 값이 될 것입니다 이 호출 무엇에 반환 835 00:40:52,050 --> 00:40:55,010 계승 기능을하는 힘 다른 인스턴스의 수 836 00:40:55,010 --> 00:40:58,420 이 기능을 계승. 837 00:40:58,420 --> 00:41:01,360 >> 그래서 재귀의 예입니다 기능, 매우 838 00:41:01,360 --> 00:41:02,530 간단한 재귀 함수. 839 00:41:02,530 --> 00:41:04,530 그러나 그들 대부분은 다음과 같이 될 것입니다. 840 00:41:04,530 --> 00:41:11,170 당신은 좋은 순환을 좋아 한 경우 퀴즈에 도전, 코딩 시도 841 00:41:11,170 --> 00:41:13,230 이진 검색 재귀. 842 00:41:13,230 --> 00:41:18,950 때문에 당신은 이진 검색을 한 경우 문제는 세 가지를 설정, 당신은 아마 그것은했다 843 00:41:18,950 --> 00:41:21,730 반복적으로 while 루프에서. 844 00:41:21,730 --> 00:41:23,700 >> 그러나 그것은 또한 쓸 수있다 재귀. 845 00:41:23,700 --> 00:41:26,310 당신은 당신의 자신을 쓸 필요 해요 일부 소요 별도의 기능 846 00:41:26,310 --> 00:41:29,020 다른 명령 줄 인수 - 또는 하지 명령 줄 인수, 일부 847 00:41:29,020 --> 00:41:30,910 다른 그냥 평범한 인수. 848 00:41:30,910 --> 00:41:33,870 하지만 이진 검색을 쓸 수 재귀 적으로뿐만 아니라. 849 00:41:33,870 --> 00:41:36,190 >> 학생 : 그래서 당신은 또한 쓸 수있는, 대신 X 마이너스 1의 경우 850 00:41:36,190 --> 00:41:39,502 또한 X 마이너스를 쓸 수 마이너스, 또는 당신은 할 수 851 00:41:39,502 --> 00:41:40,830 작성 마이너스 마이너스 X. 852 00:41:40,830 --> 00:41:44,740 당신은 정말 신속하게 이유를 설명 할 수 사람들은 여러 가지가 될 것입니다, 853 00:41:44,740 --> 00:41:49,510 차이가 사이에 무엇인지 등 X 마이너스 마이너스 마이너스 마이너스 X? 854 00:41:49,510 --> 00:41:51,320 >> 제이슨 허쉬 호른 : 아니, 아니에요 그것으로 갈 예정. 855 00:41:51,320 --> 00:41:55,500 하지만 이후에 대해 이야기합니다 클래스. X 마이너스 마이너스, 마이너스 마이너스 X 856 00:41:55,500 --> 00:41:57,780 (1)에 의해 X를 감소. 857 00:41:57,780 --> 00:41:59,090 그러나 그들은 약간 다르게 해. 858 00:41:59,090 --> 00:42:00,340 하지만 그것으로 가고 싶지 않아. 859 00:42:00,340 --> 00:42:04,330 860 00:42:04,330 --> 00:42:09,090 재귀에 대한 다른 질문 또는이 기능? 861 00:42:09,090 --> 00:42:10,140 정말 의사도 아니다. 862 00:42:10,140 --> 00:42:15,060 즉, 기본적으로 코드의 이를 위해 쓸 것 C. 863 00:42:15,060 --> 00:42:19,393 >> OK, 다른 질문 여기에 주제에 최대 약? 864 00:42:19,393 --> 00:42:19,864 그래. 865 00:42:19,864 --> 00:42:23,130 >> 학생 : 나는의 빠른 개요를 부동 소수점 정밀도. 866 00:42:23,130 --> 00:42:24,260 >> 제이슨 허쉬 호른 : 부동 포인트 및 정밀. 867 00:42:24,260 --> 00:42:26,920 할 수있는 사람이 정말 빨리 나에게 설명해 줄 868 00:42:26,920 --> 00:42:28,210 부동 소수점 정밀도? 869 00:42:28,210 --> 00:42:30,420 당신은 모든 사용자에 대해이 작업을 수행했다 문제는 설정, 그래서 당신은 모든이야 870 00:42:30,420 --> 00:42:31,700 잘 알고. 871 00:42:31,700 --> 00:42:35,090 아니면 모든 여러분. 872 00:42:35,090 --> 00:42:36,602 누군가? 873 00:42:36,602 --> 00:42:39,530 나에게 시작 지점을 제공합니다. 874 00:42:39,530 --> 00:42:40,750 부동 소수점 정밀도. 875 00:42:40,750 --> 00:42:42,380 문제는 무엇입니까? 876 00:42:42,380 --> 00:42:42,960 예. 877 00:42:42,960 --> 00:42:43,680 빅토리아? 878 00:42:43,680 --> 00:42:44,480 >> 바네사 : 바네사. 879 00:42:44,480 --> 00:42:45,285 >> 제이슨 허쉬 호른 : 바네사. 880 00:42:45,285 --> 00:42:45,680 미안 해요. 881 00:42:45,680 --> 00:42:51,550 >> 바네사 : 단지 유한 수 있습니다 표시 할 수있는 수치 882 00:42:51,550 --> 00:42:57,930 당신은,의에이기 때문에 우리의 케이스, 32 비트 시스템. 883 00:42:57,930 --> 00:43:03,080 그래서 당신은 먹을 수도 몇 가지 숫자를 확인합니다. 884 00:43:03,080 --> 00:43:03,910 >> 제이슨 허쉬 호른 : 그래서의 정확히 맞아. 885 00:43:03,910 --> 00:43:08,110 단지 어느 정도의가있다 표시 할 수있는 숫자. 886 00:43:08,110 --> 00:43:11,770 두 개의 매우 큰 숫자를 곱하면, 그것은 양 넘칠 수도 887 00:43:11,770 --> 00:43:13,950 공간의 당신은 표현해야 정수. 888 00:43:13,950 --> 00:43:17,930 때때로 우리가 사용하는 이유 대신 INT의 오래 오래. 889 00:43:17,930 --> 00:43:19,210 즉, 더 많은 공간을 가지고 있습니다. 890 00:43:19,210 --> 00:43:21,210 즉, 더 많은 수를 보유 할 수 있습니다. 891 00:43:21,210 --> 00:43:24,310 >> 부동 소수점 정밀도로 할 수있다 그뿐만 아니라 함께 할 수있다 892 00:43:24,310 --> 00:43:29,300 진수가 있다는 사실 항상 표시되지. 893 00:43:29,300 --> 00:43:29,540 미안 해요. 894 00:43:29,540 --> 00:43:31,280 날이 다시 위로 넣어 보자. 895 00:43:31,280 --> 00:43:36,610 진수 1.0 항상 그렇지는 않아요 당신처럼 표현 기대, 896 00:43:36,610 --> 00:43:40,770 1.000000000. 897 00:43:40,770 --> 00:43:50,360 그것은 때때로로 표시됩니다 1.000000001 또는 0.999999999. 898 00:43:50,360 --> 00:43:52,780 심지어 89가 발생 될 수 있습니다 어딘가에서. 899 00:43:52,780 --> 00:43:56,560 그래서 그 진수는 없습니다 정확히 것 같은 표현 900 00:43:56,560 --> 00:43:58,430 그들이 표현 될 것으로 기대합니다. 901 00:43:58,430 --> 00:44:00,010 >> 그래서 문제에서 설정 - 902 00:44:00,010 --> 00:44:00,860 두 개의인가? - 903 00:44:00,860 --> 00:44:05,290 문제는 우리가 다룬 두 가지를 설정 우리가 원하는 부동 소수점 숫자 904 00:44:05,290 --> 00:44:08,690 그들에게 우리가 원하는 정확히 표현하기 그들을 대표하는, 수 905 00:44:08,690 --> 00:44:12,860 동전 또는 센트의 개수, 우리는 100을 곱합니다. 906 00:44:12,860 --> 00:44:14,750 우리는 그들을 반올림. 907 00:44:14,750 --> 00:44:18,660 그리고 우리는 모든 것을 차단 소수점 뒤에. 908 00:44:18,660 --> 00:44:22,020 즉 보장하는 것이라고 그들은 것 우리가 원하는 정확하게 실제로 동일 909 00:44:22,020 --> 00:44:22,410 그들과 동일합니다. 910 00:44:22,410 --> 00:44:26,870 >> 당신이 뭔가를 가지고 갈 때 그 때문에 떠 당신은, INT로 돌려 911 00:44:26,870 --> 00:44:29,860 오른쪽에있는 모든 것을 차단 소수점. 912 00:44:29,860 --> 00:44:33,900 일부 부동 소수점이 때문에 부정확, 100.000 수 있습니다 913 00:44:33,900 --> 00:44:37,440 99.999999999로 표현. 914 00:44:37,440 --> 00:44:40,350 그리고 당신은 모든 것을 할 수 차단하는 경우 바로 오른쪽, 당신은거야 915 00:44:40,350 --> 00:44:41,600 잘못된 번호를 얻을. 916 00:44:41,600 --> 00:44:44,050 917 00:44:44,050 --> 00:44:44,180 그래. 918 00:44:44,180 --> 00:44:45,290 >> 학생 : 내가 가진 질문 에 대한 캐스팅. 919 00:44:45,290 --> 00:44:47,500 어떤 순서로 발생합니까? 920 00:44:47,500 --> 00:44:54,480 당신은 플로트를 할 줄 경우, 브라켓, 1 분할 10, 1, 10으로 분할 하는가 921 00:44:54,480 --> 00:44:58,910 다음 0.1 얻을, 다음 차례 플로트에? 922 00:44:58,910 --> 00:45:01,470 >> 제이슨 허쉬 호른 : 당신이 할 경우 10로 나눈 1 플로트 - 923 00:45:01,470 --> 00:45:02,550 >> 학생 : 네, 다음에 해당 - 924 00:45:02,550 --> 00:45:04,240 음, 평소 에서이 같은이 - 925 00:45:04,240 --> 00:45:04,690 그래. 926 00:45:04,690 --> 00:45:06,760 당신은 부동 확인하려면, 오른쪽? 927 00:45:06,760 --> 00:45:12,790 >> 제이슨 허쉬 호른 : OK, 그래서 우리는 갈거야 연구 만 반복하는 거죠 해당를 사용 928 00:45:12,790 --> 00:45:15,390 이 질문에 대한 답변 코딩을 통해. 929 00:45:15,390 --> 00:45:18,180 당신은 아마 많이있을 것이기 때문에 이 분의 질문에, 좋은 방법 930 00:45:18,180 --> 00:45:19,100 이를 해결하는 것은 코딩하는 것입니다. 931 00:45:19,100 --> 00:45:21,320 그래서 우리는 지금이 권리를 코딩하는거야 그리고, 우리는 다시 갈 예정입니다 932 00:45:21,320 --> 00:45:24,020 당신이했던 질문을 코딩. 933 00:45:24,020 --> 00:45:24,950 >> 그래서 첫 번째 줄 - 934 00:45:24,950 --> 00:45:29,390 나는 그것을 기록하지 말았어야 - 무엇인가 우리가해야 할 첫 번째 일 때 우리 935 00:45:29,390 --> 00:45:32,250 의 gedit에서 새 파일을 열어? 936 00:45:32,250 --> 00:45:34,190 >> 학생 : 포함합니다. 937 00:45:34,190 --> 00:45:35,920 >> 제이슨 허쉬 호른 : 무엇을 포함? 938 00:45:35,920 --> 00:45:37,952 >> 학생 : CS50 라이브러리. 939 00:45:37,952 --> 00:45:39,920 >> 제이슨 허쉬 호른 : OK. 940 00:45:39,920 --> 00:45:42,590 우리는 다른 무엇을 포함해야합니까? 941 00:45:42,590 --> 00:45:46,820 우리는 단지 어떻게되는지 확인하는 것입니다 당신은 float로 뭔가를 캐스팅 할 때. 942 00:45:46,820 --> 00:45:48,605 그러나 우리는 우리가 인 경우에 포함해야합니까 C 프로그램을 작성하는 것? 943 00:45:48,605 --> 00:45:49,300 >> 학생 : 표준 I / O 944 00:45:49,300 --> 00:45:50,625 >> 제이슨 허쉬 호른 : STDIO.H. 945 00:45:50,625 --> 00:45:54,880 우리는 실제로이를 위해 필요로하지 않는다 프로그램은 cs50.h, 그것은 비록 946 00:45:54,880 --> 00:45:55,920 그것을 포함 항상하였습니다. 947 00:45:55,920 --> 00:45:58,260 그러나 우리는 항상 stdio.h와 필요합니까. 948 00:45:58,260 --> 00:45:59,660 >> 학생 : C에서 코딩 할 때? 949 00:45:59,660 --> 00:46:15,770 >> 제이슨 허쉬 호른 : C로 코딩 할 때 950 00:46:15,770 --> 00:46:17,090 >> 그래서 나는이. C 파일로 저장합니다. 951 00:46:17,090 --> 00:46:18,590 나는 몇 가지 좋은 구문 강조를 얻을. 952 00:46:18,590 --> 00:46:22,890 나는 주 안에 빈 공간을 썼다. 953 00:46:22,890 --> 00:46:24,792 무효는 무엇을 의미 하는가? 954 00:46:24,792 --> 00:46:26,740 >> 학생 : 어떤을하지 않습니다 명령 줄 인수. 955 00:46:26,740 --> 00:46:28,900 >> 제이슨 허쉬 호른이있는 무효 수단, 경우, 기본은 고려하지 않았 음 956 00:46:28,900 --> 00:46:29,700 명령 줄 인수. 957 00:46:29,700 --> 00:46:32,720 다른 경우에, 그것은 함수를 의미 명령 줄 인수를 고려하지 않습니다. 958 00:46:32,720 --> 00:46:36,560 또는 기능은 내가 있다면 무효를 작성 주 (무효), 즉 주의를 말할 것입니다 959 00:46:36,560 --> 00:46:38,460 아무것도 반환하지 않습니다. 960 00:46:38,460 --> 00:46:39,960 그래서 공간은 아무런 의미가 없습니다. 961 00:46:39,960 --> 00:46:42,510 내가한다면 나는 무엇을 쓸 것 명령 줄 인수를? 962 00:46:42,510 --> 00:46:45,250 963 00:46:45,250 --> 00:46:47,150 >> 학생 : INT 아크 C 끈 아크 절 964 00:46:47,150 --> 00:46:49,055 >> 제이슨 허쉬 호른 : INT ARGC 문자열 ARGV. 965 00:46:49,055 --> 00:46:54,050 966 00:46:54,050 --> 00:46:55,572 그 권리인가? 967 00:46:55,572 --> 00:46:58,720 >> 학생 : 그것은 문자 스타 ARGV 브래킷입니다. 968 00:46:58,720 --> 00:47:01,730 >> 제이슨 허쉬 호른 : 그래서 당신은 쓸 수 문자열 argv와 브래킷 또는 문자 스타 ARGV 969 00:47:01,730 --> 00:47:03,710 브라켓,하지만 당신은 괄호가 필요합니다. 970 00:47:03,710 --> 00:47:06,290 ARGV 배열 때문에 문자열의 기억. 971 00:47:06,290 --> 00:47:07,360 그것은 단지 하나의 문자열이 아니다. 972 00:47:07,360 --> 00:47:10,350 그래서 문자열 ARGV, 여기에 전부이다 한 문자열 변수는 argv했다. 973 00:47:10,350 --> 00:47:13,630 문자열 ARGV 브래킷, 여기있다 문자열의 배열입니다. 974 00:47:13,630 --> 00:47:17,865 그래서 INT ARGC 문자열 argv와 브래킷 뭔가 될 것이라는 점을 I 975 00:47:17,865 --> 00:47:18,810 아마 쓸 것이다. 976 00:47:18,810 --> 00:47:23,050 >> 그래서 당신은 정수에 저장하고 싶어? 977 00:47:23,050 --> 00:47:24,285 >> 학생 : 네, 정수입니다. 978 00:47:24,285 --> 00:47:25,840 또는 플로트에. 979 00:47:25,840 --> 00:47:26,710 >> 제이슨 허쉬 호른 : 플로트? 980 00:47:26,710 --> 00:47:30,790 마찬가지로, 플로트 X 10로 나눈 1 같습니다. 981 00:47:30,790 --> 00:47:32,040 >> 제이슨 허쉬 호른 : OK. 982 00:47:32,040 --> 00:47:40,160 983 00:47:40,160 --> 00:47:42,240 어떻게 printf와의 float를 인쇄합니까? 984 00:47:42,240 --> 00:47:45,100 985 00:47:45,100 --> 00:47:46,714 무엇? 986 00:47:46,714 --> 00:47:47,560 >> 학생 : % f를. 987 00:47:47,560 --> 00:47:48,300 >> 제이슨 허쉬 호른 : % f를. 988 00:47:48,300 --> 00:47:50,810 정수는 무엇입니까? 989 00:47:50,810 --> 00:47:52,110 d 또는 전. 990 00:47:52,110 --> 00:47:53,000 문자열은 무엇입니까? 991 00:47:53,000 --> 00:47:54,240 >> 학생 :의. 992 00:47:54,240 --> 00:47:56,140 >> 제이슨 허쉬 호른 :의. 993 00:47:56,140 --> 00:47:57,550 어떻게 새로운 라인을 얻을 수 있습니까? 994 00:47:57,550 --> 00:47:58,800 >> 학생 : 백 슬래시 명. 995 00:47:58,800 --> 00:48:04,610 996 00:48:04,610 --> 00:48:07,100 >> 제이슨 허쉬 호른 : 나는 무엇을 반환합니까 주요 실행 경우 올바르게? 997 00:48:07,100 --> 00:48:08,360 >> 학생 : 0. 998 00:48:08,360 --> 00:48:09,430 그래도, 그 라인을 작성해야합니까?에게 999 00:48:09,430 --> 00:48:10,170 >> 학생 : 아니오. 1000 00:48:10,170 --> 00:48:11,513 OK, 우리는 그것을 쓰지 않습니다. 1001 00:48:11,513 --> 00:48:16,450 1002 00:48:16,450 --> 00:48:17,190 모두가 그것을 읽을 수 있습니까? 1003 00:48:17,190 --> 00:48:18,485 그것은 조금 작은 보인다. 1004 00:48:18,485 --> 00:48:20,160 모두가 참조하거나해야 할 수 있습니다 나는 그것이 더 큰 만들어? 1005 00:48:20,160 --> 00:48:23,480 1006 00:48:23,480 --> 00:48:25,100 나는 카메라를 들어, 우리가 만드는 것 같아요 하지만, 그것은 조금 더 큰. 1007 00:48:25,100 --> 00:48:35,750 1008 00:48:35,750 --> 00:48:38,410 >> 제이슨 허쉬 호른 :이를 설정하려면 . 실행 파일로 파일을 C의 어떤 1009 00:48:38,410 --> 00:48:39,260 나는 씁니까?에게 1010 00:48:39,260 --> 00:48:41,610 >> 학생 : 시험을합니다. 1011 00:48:41,610 --> 00:48:42,080 >> 제이슨 허쉬 호른 : 죄송합니다? 1012 00:48:42,080 --> 00:48:42,790 >> 학생 : 시험을합니다. 1013 00:48:42,790 --> 00:48:44,040 >> 제이슨 허쉬 호른 : 테스트를합니다. 1014 00:48:44,040 --> 00:48:46,700 1015 00:48:46,700 --> 00:48:48,410 우리에 대해 얘기했다 이전이 줄. 1016 00:48:48,410 --> 00:48:49,140 연타. 1017 00:48:49,140 --> 00:48:51,270 그 소리는 무엇입니까? 1018 00:48:51,270 --> 00:48:52,200 컴파일러의 이름입니다. 1019 00:48:52,200 --> 00:48:53,920 이 라인은 무엇입니까? 1020 00:48:53,920 --> 00:48:55,580 >> 학생 : GDB의 사용을 위해 설정합니다. 1021 00:48:55,580 --> 00:48:59,230 >> 제이슨 허쉬 호른 : 세트 그것은 최대 GDB의 사용. 1022 00:48:59,230 --> 00:49:02,338 이 줄은, 그 무엇인가? 1023 00:49:02,338 --> 00:49:03,290 >> 학생 : 소스 코드. 1024 00:49:03,290 --> 00:49:06,010 >> 제이슨 허쉬 호른 : 그의 소스 파일,. c 파일의 이름을 지정합니다. 1025 00:49:06,010 --> 00:49:08,150 이 두 라인은 어떻게해야합니까? 1026 00:49:08,150 --> 00:49:10,245 또는이 두 가지하지 라인. 1027 00:49:10,245 --> 00:49:12,300 >> 학생 : 그것은 이름이 테스트합니다. 1028 00:49:12,300 --> 00:49:15,410 >> 제이슨 허쉬 호른 : 그래서 대시 O는 말한다, 다르게 뭔가 이름을 지정합니다. 1029 00:49:15,410 --> 00:49:16,790 그리고 여기 당신이 테스트를 호출하고 있습니다. 1030 00:49:16,790 --> 00:49:18,900 나는 그것을하고 있지 않은 경우, 무엇이 이름을 것인가? 1031 00:49:18,900 --> 00:49:20,260 >> 학생 : a.out의. 1032 00:49:20,260 --> 00:49:22,340 >> 제이슨 허쉬 호른 : a.out의. 1033 00:49:22,340 --> 00:49:25,366 이 기능은 무엇입니까? 1034 00:49:25,366 --> 00:49:27,670 >> 학생 : 수학 라이브러리를 링크합니다. 1035 00:49:27,670 --> 00:49:29,550 >> 제이슨 허쉬 호른 : 그것은 링크 수학 라이브러리. 1036 00:49:29,550 --> 00:49:32,880 우리는 수학 라이브러리를 포함하지 않았지만 즉 너무 일반적이기 때문에, 그들은했습니다 1037 00:49:32,880 --> 00:49:35,780 기록 메이크업 항상 포함하는 수학 라이브러리. 1038 00:49:35,780 --> 00:49:39,050 마찬가지로,이 포함되어 있습니다 CS50 라이브러리. 1039 00:49:39,050 --> 00:49:43,010 >> 우리가 게시하면 OK, 그래서 우리는 지금이 테스트라는 실행. 1040 00:49:43,010 --> 00:49:45,150 이를 실행하기 위해, 테스트를 작성합니다. 1041 00:49:45,150 --> 00:49:48,330 나는 나의 부동 소수점 것을 볼 예상대로 0 같습니다. 1042 00:49:48,330 --> 00:49:50,890 1043 00:49:50,890 --> 00:49:51,590 그합니까 - 1044 00:49:51,590 --> 00:49:52,060 그래서 - 1045 00:49:52,060 --> 00:49:55,210 >> 학생 : 그럼 당신은 넣어 경우, 지금 떠 같은 당신은 플로트로 캐스팅 - 1046 00:49:55,210 --> 00:49:56,870 >> 제이슨 허쉬 호른 : 캐스트 부동의 1? 1047 00:49:56,870 --> 00:49:59,180 >> 학생 : 아니요, 전체 일을 캐스팅 - 1048 00:49:59,180 --> 00:49:59,500 그래. 1049 00:49:59,500 --> 00:50:02,460 당신이 그것을 한 경우에, 것 즉, 0.1 만들기? 1050 00:50:02,460 --> 00:50:07,170 >> 제이슨 허쉬 호른 : OK, 그래서 정말 빨리, 1은 10로 나눈, 그입니다 1051 00:50:07,170 --> 00:50:08,690 정수는 구분된다. 1052 00:50:08,690 --> 00:50:13,580 당신은 정수를 나눌 때, 그들은이야 0, 당신은 저장하고이 0에 1053 00:50:13,580 --> 00:50:17,170 슬래시이기 때문에, 떠 다만 정수 나누기. 1054 00:50:17,170 --> 00:50:19,180 그래서 지금 우리는 뭔가를 꺼예요 플로트에. 1055 00:50:19,180 --> 00:50:21,650 >> 의가 어떻게되는지 보자. 1056 00:50:21,650 --> 00:50:22,900 우리는 테스트를 할 수 있습니다. 1057 00:50:22,900 --> 00:50:25,870 1058 00:50:25,870 --> 00:50:31,090 그래서 지금 우리는 슬래시가 아니라는 것을 확인 정수 나누기, 그것은 부동 한 1059 00:50:31,090 --> 00:50:32,640 소수점 나누기. 1060 00:50:32,640 --> 00:50:35,700 때문에 인수 중 하나 float로 캐스팅되었다. 1061 00:50:35,700 --> 00:50:38,380 그래서 지금이 치료, 말하고 있었다 분할 우리가 상대하고있는 등 1062 00:50:38,380 --> 00:50:40,140 부동 소수점이 아닌 정수와. 1063 00:50:40,140 --> 00:50:42,760 그래서 우리는 우리가 기대하는 답변을 얻을. 1064 00:50:42,760 --> 00:50:44,620 >> 의 발생 보자 - 1065 00:50:44,620 --> 00:50:47,103 죄송합니다. 1066 00:50:47,103 --> 00:50:51,646 나는 이상의 10 진수를 인쇄하려는 경우 명소, 내가 그 방법을 수행 할 수 있습니까? 1067 00:50:51,646 --> 00:50:55,550 >> 학생 : 포인트 점 F, 또는 많은 당신이 원하는대로 소수점. 1068 00:50:55,550 --> 00:51:02,280 1069 00:51:02,280 --> 00:51:04,440 >> 제이슨 허쉬 호른 : 그래서 인쇄 10 진수 명소. 1070 00:51:04,440 --> 00:51:06,610 그리고 우리는 지금 우리가 있어요 참조 이상한 물건. 1071 00:51:06,610 --> 00:51:09,650 그리고 다시 질문으로 돌아갑니다 에 대한 점의 부정확성 부동. 1072 00:51:09,650 --> 00:51:10,950 여기에 저장된 이상한 물건이있다. 1073 00:51:10,950 --> 00:51:13,650 1074 00:51:13,650 --> 00:51:15,275 >> OK, 그 질문에 대한 답변을합니까? 1075 00:51:15,275 --> 00:51:18,550 1076 00:51:18,550 --> 00:51:20,200 당신은 다른 무엇을 원했는가 빨리 코드에? 1077 00:51:20,200 --> 00:51:25,470 >> 학생 : 그냥 여부를보고 싶어 아니, 당신은 어떤 포인터를 해제하는 경우, 1078 00:51:25,470 --> 00:51:30,410 그 포인터가 여전히 저장했는지 여부 그것은이되어 있었는지의 주소 1079 00:51:30,410 --> 00:51:32,170 이전에 가리키는. 1080 00:51:32,170 --> 00:51:34,100 >> 제이슨 허쉬 호른 : OK, 그래서 그 작업을 수행 할 수 있습니다. 1081 00:51:34,100 --> 00:51:38,030 문자 스타 PTR,이 변수를 생성 char 형 스타의 PTR했다. 1082 00:51:38,030 --> 00:51:39,280 어떻게의 malloc을 작성하려면 어떻게해야합니까? 1083 00:51:39,280 --> 00:51:40,550 알덴? 1084 00:51:40,550 --> 00:51:41,800 >> ALDEN : 저스트의 malloc. 1085 00:51:41,800 --> 00:51:44,820 1086 00:51:44,820 --> 00:51:51,040 하지만 그것의 크기로 있으며, 이 경우, 당신은 것 같은데 1087 00:51:51,040 --> 00:51:52,465 숯불을 가리키는 될 수있다. 1088 00:51:52,465 --> 00:51:54,450 그래서 문자 것. 1089 00:51:54,450 --> 00:51:57,520 >> 제이슨 허쉬 호른 : OK, 그래서 더 일반적으로, 내부 - 1090 00:51:57,520 --> 00:51:58,770 의 편집 할 수 있습니다. 1091 00:51:58,770 --> 00:52:05,100 1092 00:52:05,100 --> 00:52:09,260 malloc에​​ 내부, 당신이 수를 할 힙에 바이트. 1093 00:52:09,260 --> 00:52:12,320 일반적으로, 우리는 우리가 걸 봤어요 일을 우리가 MALLOC거야입니다 1094 00:52:12,320 --> 00:52:14,940 예를 들어, 문자열, 또는 정수의 배열. 1095 00:52:14,940 --> 00:52:21,600 그래서 우리는 10 정수 또는 10를 원하는 경우 문자는, 10은 우리에게 10을 제공 할 것입니다. 1096 00:52:21,600 --> 00:52:24,370 그리고 문자의 크기는 줄 것 우리 그 문자의 크기에 1097 00:52:24,370 --> 00:52:25,120 이 경우는 1 바이트입니다. 1098 00:52:25,120 --> 00:52:26,250 우리는 10 바이트를 얻을. 1099 00:52:26,250 --> 00:52:28,540 우리는 INT의 크기를 기록했다, 경우 그것은 우리에게 40 바이트를 줄 것이다. 1100 00:52:28,540 --> 00:52:31,520 >> 그래서 더 일반적으로, malloc에​​ 내부 원하는 바이트 수이다. 1101 00:52:31,520 --> 00:52:34,620 이 경우, 우리는 1 바이트를 얻고. 1102 00:52:34,620 --> 00:52:36,900 이상한 사용처럼 보인다 의 malloc,하지만 우리의 1103 00:52:36,900 --> 00:52:38,470 목적은 의미가 있습니다. 1104 00:52:38,470 --> 00:52:40,420 그래서이있다. 1105 00:52:40,420 --> 00:52:43,420 >> 우리는 무료로 전화를 겁니다. 1106 00:52:43,420 --> 00:52:47,040 우리는 그것을 제거하고 우​​리는 다시 PTR을 사용합니다. 1107 00:52:47,040 --> 00:52:48,750 그리고 당신은 확인하려는 거? 1108 00:52:48,750 --> 00:52:50,550 >> 학생 : 그냥 여부를 확인하고 싶어서 또는 아무것도가 아니었다 1109 00:52:50,550 --> 00:52:51,900 그것의 내부. 1110 00:52:51,900 --> 00:52:53,050 >> 제이슨 허쉬 호른 : 그래서 여부 그것은 무엇을 지적? 1111 00:52:53,050 --> 00:52:57,740 >> 학생 : 네, 정확히 여부 여전히 메모리 주소를 가지고 있었다. 1112 00:52:57,740 --> 00:53:02,220 >> 제이슨 허쉬 호른 : 그래서 당신이 원하는 PTR의 값을 확인하는 방법? 1113 00:53:02,220 --> 00:53:03,470 >> 학생 : 네, 그렇습니다. 1114 00:53:03,470 --> 00:53:07,940 1115 00:53:07,940 --> 00:53:10,160 >> 제이슨 허쉬 호른 : 나는 여기에 무엇을 쓰는가 나는 값을 확인하려면 1116 00:53:10,160 --> 00:53:11,880 포인트 - 무엇인지, 요르단 값은 말했다? 1117 00:53:11,880 --> 00:53:13,720 아니면 무슨 일이 PTR의 내부에 저장됩니다? 1118 00:53:13,720 --> 00:53:14,620 >> 학생 : 메모리 주소. 1119 00:53:14,620 --> 00:53:16,330 >> 제이슨 허쉬 호른 : 메모리 주소. 1120 00:53:16,330 --> 00:53:20,520 난 그냥이 쓰기 있다면, 그것은거야 나에게 PTR의 값을 제공합니다. 1121 00:53:20,520 --> 00:53:22,800 그리고 어떻게 인쇄합니까 메모리 어드레스? 1122 00:53:22,800 --> 00:53:26,470 형식 문자열은 무엇입니까 메모리 주소에 대한? 1123 00:53:26,470 --> 00:53:27,430 >> 학생 : % 포인트. 1124 00:53:27,430 --> 00:53:28,050 >> 제이슨 허쉬 호른 : % 포인트. 1125 00:53:28,050 --> 00:53:29,500 %의 문자열입니다. 1126 00:53:29,500 --> 00:53:30,750 포인터 % 포인트. 1127 00:53:30,750 --> 00:53:40,820 1128 00:53:40,820 --> 00:53:43,540 그 권리인가? 1129 00:53:43,540 --> 00:53:44,790 그건 바로입니다. 1130 00:53:44,790 --> 00:53:49,450 1131 00:53:49,450 --> 00:53:51,040 그래서 PTR 같음 - 1132 00:53:51,040 --> 00:53:53,350 그것은 여전히​​ 거기에 뭔가가있다. 1133 00:53:53,350 --> 00:53:56,110 1134 00:53:56,110 --> 00:53:57,645 이것은 아마도 더 흥미로운 질문. 1135 00:53:57,645 --> 00:53:59,198 그 라인은 무엇입니까? 1136 00:53:59,198 --> 00:54:00,830 >> 학생 : 원세그 오류. 1137 00:54:00,830 --> 00:54:01,310 >> 제이슨 허쉬 호른 : 무엇? 1138 00:54:01,310 --> 00:54:02,678 >> 학생 : 나는 그것이 오류를에 세그먼트 생각합니다. 1139 00:54:02,678 --> 00:54:03,574 >> 제이슨 허쉬 호른 : 흠? 1140 00:54:03,574 --> 00:54:04,920 >> 학생 : 나는 세그먼트 오류 것 같아요. 1141 00:54:04,920 --> 00:54:08,265 >> 제이슨 허쉬 호른 : 그래서이 선 코드, 스타의 PTR의 어떤 1142 00:54:08,265 --> 00:54:10,152 별은 의미합니까? 1143 00:54:10,152 --> 00:54:11,240 >> 학생 :의 내용. 1144 00:54:11,240 --> 00:54:11,560 >> 제이슨 허쉬 호른 : 네. 1145 00:54:11,560 --> 00:54:13,910 의 콘텐츠를 이동합니다. 1146 00:54:13,910 --> 00:54:16,830 그래서이 작업은 메모리에 갈 것입니다 거기에 해결하고 줘봐. 1147 00:54:16,830 --> 00:54:21,030 나는 여기 %의 C를 사용하기 때문에이 문자가 저장됩니다. 1148 00:54:21,030 --> 00:54:23,390 그래서 우리는 그 주소의 우리에 가서 방금 본 - 또는 아마있을거야 1149 00:54:23,390 --> 00:54:25,190 조금 다른이 우리가 프로그램을 실행 시간. 1150 00:54:25,190 --> 00:54:28,010 그러나 우리는 그 주소로 이동합니다 우리는 여전히 존재 알고있는 1151 00:54:28,010 --> 00:54:29,260 거기에 기능을 참조하십시오. 1152 00:54:29,260 --> 00:54:35,640 1153 00:54:35,640 --> 00:54:37,110 >> 그래서 segfault를하지 않았다. 1154 00:54:37,110 --> 00:54:38,970 그것은 우리에게 아무것도주지 않았다. 1155 00:54:38,970 --> 00:54:43,350 사실은 우리에게 주어진 수도 무엇인가, 우리는 단지 그것을 볼 수 없습니다. 1156 00:54:43,350 --> 00:54:45,110 그리고 다시이 아이디어에 간다 - 1157 00:54:45,110 --> 00:54:47,270 우리는에 너무 많이 얻을 않을거야 이, 그 이상이기 때문에 1158 00:54:47,270 --> 00:54:48,460 이 과정의 범위. 1159 00:54:48,460 --> 00:54:51,260 우리 경우에 우리는 여기에 대해 이야기 에 의해 배열의 경계를 넘어 갔다 1160 00:54:51,260 --> 00:54:54,890 1, 우리는 곤경에되지 않을 수도 있습니다. 1161 00:54:54,890 --> 00:54:58,550 >> 때때로, 당신은 단지 1로 떨어져 갈 때, 당신은 당신이 뭔가를 잘못하고,하고있어 1162 00:54:58,550 --> 00:54:59,220 곤경에 얻을 수 있습니다. 1163 00:54:59,220 --> 00:55:00,820 하지만 당신은 항상 문제가하지 않습니다. 1164 00:55:00,820 --> 00:55:05,170 그것은 따라 얼마나 나쁜 일의 당신 , 당신은 곤경에받을거야 않습니다. 1165 00:55:05,170 --> 00:55:07,790 부주의 할, 말을하지 않는 코드와 함께. 1166 00:55:07,790 --> 00:55:12,080 그러나 프로그램이없는 것, 말을하는 것입니다 당신이 어딘가에도 항상 종료 1167 00:55:12,080 --> 00:55:14,130 당신은 가고 없을 것 같아. 1168 00:55:14,130 --> 00:55:18,170 >> 그 좋은 예는 많이 있습니다 자신의 문제에있는 사람들은 3을 설정하는 1169 00:55:18,170 --> 00:55:22,350 15을 확인하지 않은 한 판의 경계입니다. 1170 00:55:22,350 --> 00:55:25,860 그래서 당신은 보았다, 왼쪽으로 보았다 바로보고, 정상에보고 1171 00:55:25,860 --> 00:55:27,000 아래로. 1172 00:55:27,000 --> 00:55:31,540 하지만 확인하지 않은 경우 최고 실제로 보드에있을 거라고. 1173 00:55:31,540 --> 00:55:35,220 그리고 그 한 많은 사람들과 그 상태에서, 자신의 프로그램은 일 1174 00:55:35,220 --> 00:55:38,960 완벽 곳 보드 때문에 당신이 하나를 간 경우, 메모리에 저장 1175 00:55:38,960 --> 00:55:42,300 그 위 또는 확인하는 메모리 주소, 아무것도 없었다 1176 00:55:42,300 --> 00:55:44,870 그것에 대해 특히 끔찍한, 그래서 당신의 프로그램이 아니었다 1177 00:55:44,870 --> 00:55:45,970 당신을 소리 것. 1178 00:55:45,970 --> 00:55:48,870 >> 그러나 우리는 여전히 포인트를 이륙 경우 당신은 그것을 확인하지 않은 당신 때문에 1179 00:55:48,870 --> 00:55:50,850 당신이되지 않은 일을하고 있었다 어떻게해야, 당신은 가질 수 1180 00:55:50,850 --> 00:55:51,860 큰일. 1181 00:55:51,860 --> 00:55:54,040 확률은 당신이 아마하지 않았다,하지만, 수 있습니다. 1182 00:55:54,040 --> 00:55:57,790 그래서 이것은, 예, 표시하는 것입니다 우리는 여전히 갈 수 있습니다. 1183 00:55:57,790 --> 00:55:59,010 그리고 우리는에 못 타요 이 경우 문제. 1184 00:55:59,010 --> 00:56:04,000 우리는 읽고하려고 노력하는 경우 다음 100 자, 우리는 좋겠 1185 00:56:04,000 --> 00:56:06,000 아마 문제가 얻을. 1186 00:56:06,000 --> 00:56:09,400 그리고 당신은 다음 100을 읽는 코드를 작성할 수 있습니다 문자 일부를 수행하여 원하는 경우 1187 00:56:09,400 --> 00:56:10,110 종류의 루프. 1188 00:56:10,110 --> 00:56:10,850 그래. 1189 00:56:10,850 --> 00:56:16,250 >> 학생 : 우리가 할당 되었기 때문에 그 공간이 실제 값, 우리는 않을 것 1190 00:56:16,250 --> 00:56:17,050 실제로 아무것도 볼 수있을 것이다. 1191 00:56:17,050 --> 00:56:21,740 우리는 설정으로 시도해야하는 c 또는 무언가를 좋아하는 같은? 1192 00:56:21,740 --> 00:56:22,640 >> 제이슨 허쉬 호른 : 지금 질문입니다. 1193 00:56:22,640 --> 00:56:25,340 어떻게 그 값을 설정하는 - 1194 00:56:25,340 --> 00:56:28,980 코드의 어떤 라인 I 라인에 작성합니까 일곱는 말을 할까? 1195 00:56:28,980 --> 00:56:34,040 >> 학생 : 스타 PTR은 하나의 동일 따옴표 따옴표를 종료 ㄷ. 1196 00:56:34,040 --> 00:56:36,970 >> 제이슨 허쉬 호른 : 그래서 태우고 문자, C, 해당 위치에, 1197 00:56:36,970 --> 00:56:40,200 때문에 다시 그 스타 거기로 이동을 의미한다. 1198 00:56:40,200 --> 00:56:43,320 그리고 왼쪽의 경우에 사용 할당 연산자, 즉 동일 1199 00:56:43,320 --> 00:56:47,270 서명, 우리가 얻을 않을 거라고 값이 값을 설정 한대로 정말 감사합니다. 1200 00:56:47,270 --> 00:56:48,520 이제 어떻게되는지 보자. 1201 00:56:48,520 --> 00:56:54,700 1202 00:56:54,700 --> 00:56:56,770 >> 우리는 뭔가를 넣어 그리고이 있었다. 1203 00:56:56,770 --> 00:56:58,000 우리는 무료로했다. 1204 00:56:58,000 --> 00:57:00,100 일부 물건은 아마 무슨 일이 있었 힙에. 1205 00:57:00,100 --> 00:57:01,890 그래서 더 이상 존재하지 않습니다. 1206 00:57:01,890 --> 00:57:07,440 그러나 다시, 우리는 가지 않을거야 거기에가는에 대한 문제가있다. 1207 00:57:07,440 --> 00:57:10,260 >> 나는 설명하기 위해 코드에서이를하고 있어요 이들 중 많은 1208 00:57:10,260 --> 00:57:12,410 당신이 가지고있는 질문은, 그들이있어 정말 흥미로운 1209 00:57:12,410 --> 00:57:13,650 많은 시간 응답. 1210 00:57:13,650 --> 00:57:15,260 그리고 그들은 정말 좋은 질문입니다. 1211 00:57:15,260 --> 00:57:19,010 그리고 당신은 그들을 알아낼 수 자신의 경우, 예를 들어, 1212 00:57:19,010 --> 00:57:19,990 우리는 절에서 아니에요. 1213 00:57:19,990 --> 00:57:20,940 그래. 1214 00:57:20,940 --> 00:57:24,430 >> 학생 : 당신에게 보내는하지 않을 때문에 어디 포인터, 당신은 필요가 1215 00:57:24,430 --> 00:57:26,530 malloc에​​ 사용합니까? 1216 00:57:26,530 --> 00:57:28,400 >> 제이슨 허쉬 호른 : 그래서이 돌아 간다 초기 질문에. 1217 00:57:28,400 --> 00:57:28,620 [? ?] 1218 00:57:28,620 --> 00:57:29,980 그냥 지역 변수인가? 1219 00:57:29,980 --> 00:57:32,280 여기 MALLOC는 강력한 없습니다. 1220 00:57:32,280 --> 00:57:35,260 여기에 malloc에​​의 사용은하지 않습니다 이 때문에 그 경쟁력 1221 00:57:35,260 --> 00:57:36,500 단지 지역 변수. 1222 00:57:36,500 --> 00:57:40,970 >> 학생 : 그래서 당신이 할 수있는 문자 스타 PTR 안녕하세요 같다? 1223 00:57:40,970 --> 00:57:41,400 >> 제이슨 허쉬 호른 : 아. 1224 00:57:41,400 --> 00:57:43,300 그래서 우리는 지금 다시받을거야 초기 질문에. 1225 00:57:43,300 --> 00:57:46,885 당신이 만족되지 않은 생각 내 대답과 함께. 1226 00:57:46,885 --> 00:57:48,220 OK? 1227 00:57:48,220 --> 00:57:49,226 그 마음에 드 셨나요? 1228 00:57:49,226 --> 00:57:49,682 >> 학생 : 네. 1229 00:57:49,682 --> 00:57:50,932 기다립니다. 1230 00:57:50,932 --> 00:57:54,090 1231 00:57:54,090 --> 00:57:57,850 >> 제이슨 허쉬 호른 : 어디 당신이 밖으로 인쇄 할 수 있습니까? 1232 00:57:57,850 --> 00:58:00,026 그래서 우리는 그와 같은 문자열을 인쇄 할 수 있습니다? 1233 00:58:00,026 --> 00:58:06,380 1234 00:58:06,380 --> 00:58:07,630 >> 학생 : 재미. 1235 00:58:07,630 --> 00:58:09,900 1236 00:58:09,900 --> 00:58:14,285 >> 제이슨 허쉬 호른 : 그래서 이것은이 말한다 인수는 문자의 형식이 있습니다. 1237 00:58:14,285 --> 00:58:17,200 1238 00:58:17,200 --> 00:58:18,620 그래서이 문자이어야한다. 1239 00:58:18,620 --> 00:58:25,170 1240 00:58:25,170 --> 00:58:26,280 >> 학생 : 그냥 처음 걸립니다. 1241 00:58:26,280 --> 00:58:28,610 >> 제이슨 허쉬 호른 : 그래서이 내가 전에 말했듯이 것입니다. 1242 00:58:28,610 --> 00:58:34,240 마치 내가 그것을 저장 안했다 변수 포인터 내부 문자열입니다. 1243 00:58:34,240 --> 00:58:35,120 그것은 저장하는 것 - 1244 00:58:35,120 --> 00:58:36,350 >> 학생 : 첫 번째 값 문자열의. 1245 00:58:36,350 --> 00:58:40,810 >> 제이슨 허쉬 호른 : 주소 문자열의 첫 번째 값을 반환합니다. 1246 00:58:40,810 --> 00:58:46,940 우리는이를 인쇄한다면, 우린 포인터의 내부 값을 가져. 1247 00:58:46,940 --> 00:58:51,005 그리고 우리는, 그것은 참으로입니다 볼 수 있습니다 메모리 주소. 1248 00:58:51,005 --> 00:58:53,595 1249 00:58:53,595 --> 00:58:56,440 >> 그 의미가 있습니까? 1250 00:58:56,440 --> 00:58:56,940 미안 해요. 1251 00:58:56,940 --> 00:58:58,996 그것이 당신의 대답이, 대기 질문,하지만? 1252 00:58:58,996 --> 00:58:59,790 >> 학생 : 네. 1253 00:58:59,790 --> 00:59:05,830 >> 제이슨 허쉬 호른 : 코드 줄입니다 문자열 다음 다른를 만들기 1254 00:59:05,830 --> 00:59:09,115 을 지적하는 변수 포인터 해당 문자열에 해당 배열. 1255 00:59:09,115 --> 00:59:14,320 1256 00:59:14,320 --> 00:59:14,980 그래. 1257 00:59:14,980 --> 00:59:19,200 >> 우리는 하나의 메모리를 갔다 그래서 경우 ​​: 학생 더 해결, 우리가 시간을 얻을 것인가? 1258 00:59:19,200 --> 00:59:21,990 1259 00:59:21,990 --> 00:59:23,150 그것은 문자열로 저장되어 있습니까? 1260 00:59:23,150 --> 00:59:24,400 >> 제이슨 허쉬 호른은 : 마찬가지로, 우리는 한 - 1261 00:59:24,400 --> 00:59:28,540 1262 00:59:28,540 --> 00:59:30,790 그래서 이것은 할 가치가있다. 1263 00:59:30,790 --> 00:59:33,780 이것은 소수점 연산, 너희들이다 이전에 볼 수 있고해야 1264 00:59:33,780 --> 00:59:35,550 상대적으로 편안합니다. 1265 00:59:35,550 --> 00:59:36,905 이 기록에 가깝다 - 1266 00:59:36,905 --> 00:59:41,980 1267 00:59:41,980 --> 00:59:46,350 우리는이 코드 라인을 작성했다, 경우 우리는 이전에 배열 표기법을 본 적이있다. 1268 00:59:46,350 --> 00:59:55,900 이것은 우리에게 두 번째를 제공해야 이 배열, 시간 가치. 1269 00:59:55,900 --> 01:00:05,010 >> 우리가 이런 짓을하면이 또한 제공해야 우리가 배열의 두 번째 값입니다. 1270 01:00:05,010 --> 01:00:08,320 이는 메모리에없는 것입니다 때문에 우선 주소 만 1271 01:00:08,320 --> 01:00:10,530 하나 이상의 물건의 메모리 주소. 1272 01:00:10,530 --> 01:00:14,360 그리고 스타 운영자 역 참조 그 포인터. 1273 01:00:14,360 --> 01:00:16,940 그리고 다시 보자. 1274 01:00:16,940 --> 01:00:18,664 우리는 다시 시간을 얻을. 1275 01:00:18,664 --> 01:00:20,980 >> 학생 : 어떤 정확히 수행 의미 역 참조? 1276 01:00:20,980 --> 01:00:23,650 >> 제이슨 허쉬 호른 : 역 참조 이동에 대한 멋진 단어입니다. 1277 01:00:23,650 --> 01:00:26,390 그에게 가서 거기의 정보 포인터 역 참조입니다. 1278 01:00:26,390 --> 01:00:28,240 그러기 엔 그냥 멋진 단어입니다. 1279 01:00:28,240 --> 01:00:29,986 >> 우리는 인쇄를 원하는 경우 : 학생 전체 문자열은 할 수 우리 1280 01:00:29,986 --> 01:00:31,930 앰퍼샌드 포인터를합니까? 1281 01:00:31,930 --> 01:00:33,490 >> 제이슨 허쉬 호른 : OK, 우리는 여기에 일시 정지하는 것. 1282 01:00:33,490 --> 01:00:35,480 우리는 여기서 끝나지 것입니다. 1283 01:00:35,480 --> 01:00:41,760 앰퍼샌드는 당신의 주소를 제공합니다 위치, 그래서 때의 앰퍼샌드을 1284 01:00:41,760 --> 01:00:44,080 변수는, 당신에게 주소를 제공합니다 그 변수가 저장되는 위치. 1285 01:00:44,080 --> 01:00:48,580 앰퍼샌드 포인터가 줄 것이다 PTR은 메모리에 PTR의 주소. 1286 01:00:48,580 --> 01:00:50,140 >> 우리는 계속하지 않을거야 이 예제와 함께. 1287 01:00:50,140 --> 01:00:52,640 당신은이를 알아낼 수 자신에 대한 것들. 1288 01:00:52,640 --> 01:00:55,740 그러나 다시, 이것은도 목전 수 있습니다 당신이 알아야하는 것 이상의 비트 1289 01:00:55,740 --> 01:00:58,000 이 중기의 범위 - 1290 01:00:58,000 --> 01:00:59,070 또는이 퀴즈, 오히려. 1291 01:00:59,070 --> 01:01:00,270 미안 해요. 1292 01:01:00,270 --> 01:01:03,770 >> 나는이 때문에 우리는 이동 예정 하나의 코딩 문제를 이렇게 좋아 1293 01:01:03,770 --> 01:01:05,100 시간이 다되기 전에. 1294 01:01:05,100 --> 01:01:09,340 그리고 우리는 내가 무슨 생각을 코딩하는거야 이들의 가장 강력한입니다 1295 01:01:09,340 --> 01:01:11,020 예, atoi와. 1296 01:01:11,020 --> 01:01:14,520 그래서이에 대한 질문이었다 2 년 전 퀴즈. 1297 01:01:14,520 --> 01:01:17,810 그리고 여기 보드에 있습니다. 1298 01:01:17,810 --> 01:01:20,680 >> 사람들은 퀴즈에했다 - 1299 01:01:20,680 --> 01:01:23,640 그들은 조금 더 tesxt를 부여했다 질문,하지만 난 제거 1300 01:01:23,640 --> 01:01:26,640 그것은 불필요 텍스트 때문에 지금 우리의 목적을 위해. 1301 01:01:26,640 --> 01:01:29,180 그냥 몇 가지 배경이었다 무슨 짓을 atoi와에. 1302 01:01:29,180 --> 01:01:31,425 하지만 모두가 알고 있습니다 매우 atoi와 잘 알고. 1303 01:01:31,425 --> 01:01:35,620 >> 나는 당신이 코드를 제안 종이 한 장에. 1304 01:01:35,620 --> 01:01:39,310 나는 또한 당신이 전략을 사용하는 것이 좋습니다 우리는 이상 떠나면 1305 01:01:39,310 --> 01:01:41,040 우리의 부분에 많이. 1306 01:01:41,040 --> 01:01:44,130 첫째, 당신이 이해할 수 있도록 무엇 atoi와의이 일을. 1307 01:01:44,130 --> 01:01:47,580 그림을 그리거나 일부 마련 당신의 머리에 그것의 정신적 이미지. 1308 01:01:47,580 --> 01:01:51,120 다음으로,이에 대한 의사를 작성. 1309 01:01:51,120 --> 01:01:53,120 퀴즈에, 당신이 얻을 모든 경우 의사, 적어도 1310 01:01:53,120 --> 01:01:54,550 무언가를 내려 놔. 1311 01:01:54,550 --> 01:02:00,070 그 다음에 그 의사를 매핑 C. 당신은에 체크를 한 경우 1312 01:02:00,070 --> 01:02:03,760 의사와 같은 선택하면 뭔가 1, 그 경우에 매핑된다 1313 01:02:03,760 --> 01:02:05,750 등 조건. 1314 01:02:05,750 --> 01:02:07,850 그리고 마지막으로, C.에서 프로그램을 코딩 1315 01:02:07,850 --> 01:02:15,000 >> 그래서 다시 atoi와에 가서 5 분 소요 한 장에이 코드를 1316 01:02:15,000 --> 01:02:19,480 대한 아마 용지, 당신이에 걸릴 시간의 양 1317 01:02:19,480 --> 01:02:21,260 코드 atoi와에 퀴즈. 1318 01:02:21,260 --> 01:02:27,060 다섯 15 분, 다섯 다섯, 12 10 분 거리에있는 양에 관한 것입니다 1319 01:02:27,060 --> 01:02:30,150 이에 대한 지출을 줄 시간 퀴즈 질문입니다. 1320 01:02:30,150 --> 01:02:31,670 그래서, 지금 5 분 정도 걸릴 바랍니다. 1321 01:02:31,670 --> 01:02:35,957 그리고 당신은 질문이있는 경우에는, 인상 당신의 손과 나는 돌아올거야. 1322 01:02:35,957 --> 01:06:39,570 1323 01:06:39,570 --> 01:06:41,066 >> [잡담] 1324 01:06:41,066 --> 01:08:35,279 1325 01:08:35,279 --> 01:08:37,580 >> 제이슨 허쉬 호른 : OK, 그래서 그 5 분이었다. 1326 01:08:37,580 --> 01:08:39,880 즉, 양의에 대해 아마이었다 시간은 당신이 퀴즈에 그 지출 것 1327 01:08:39,880 --> 01:08:42,120 그 시간이 아마 로우 엔드. 1328 01:08:42,120 --> 01:08:44,010 우리는 약간의 요점을 되풀이합니다. 1329 01:08:44,010 --> 01:08:45,740 우리가이 코딩을 시작하자. 1330 01:08:45,740 --> 01:08:49,479 그리고 우리는 모든 방법을 통해 얻지 않는 경우에, 이에 대한 답변이 1331 01:08:49,479 --> 01:08:54,189 퀴즈 질문을 다시 사용할 수 있습니다, 2011 년 가을이 질문 할 때입니다 1332 01:08:54,189 --> 01:08:54,913 퀴즈에 출연. 1333 01:08:54,913 --> 01:08:57,830 >> 그리고 8 점의 가치가 있었다 퀴즈에 다음. 1334 01:08:57,830 --> 01:09:01,140 8 점의 하이 엔드에 포인트 무언가의 금액은 가치가있다. 1335 01:09:01,140 --> 01:09:04,790 보통 질문 범위이다 1-6 점. 1336 01:09:04,790 --> 01:09:08,500 그래서이 더 도전 확실히 질문. 1337 01:09:08,500 --> 01:09:09,750 나 누구를 시작 할 수 있습니까? 1338 01:09:09,750 --> 01:09:13,260 1339 01:09:13,260 --> 01:09:15,380 >> 일반적으로, 우리는거야 이로 할 수 있습니다 1340 01:09:15,380 --> 01:09:17,550 논리적으로, atoi와 함수? 1341 01:09:17,550 --> 01:09:19,569 우리는 무엇을 하시겠습니까? 1342 01:09:19,569 --> 01:09:22,279 그래서 우리는 쓸거야 일부 의사. 1343 01:09:22,279 --> 01:09:24,090 >> 학생 : 문자 변환 정수에. 1344 01:09:24,090 --> 01:09:26,700 >> 제이슨 허쉬 호른 : 문자 변환 정수에. 1345 01:09:26,700 --> 01:09:27,479 OK. 1346 01:09:27,479 --> 01:09:30,870 그래서 얼마나 많은 문자 우리는 통과해야 할 것? 1347 01:09:30,870 --> 01:09:32,295 >> 학생 : 그들 모두. 1348 01:09:32,295 --> 01:09:34,100 >> 학생 : 모든 문자 문자열. 1349 01:09:34,100 --> 01:09:35,540 >> 제이슨 허쉬 호른 : 모든 문자열의 문자. 1350 01:09:35,540 --> 01:09:42,180 우리는 모든을 통해 가고 싶어 그렇다면 문자열의 문자는 것은 무엇인가 1351 01:09:42,180 --> 01:09:44,560 C에서 우리는 허용 된 것을 본 적이 우리는 모든을 통해 이동합니다 1352 01:09:44,560 --> 01:09:45,939 문자열의 문자? 1353 01:09:45,939 --> 01:09:46,819 >> 학생 : 루프. 1354 01:09:46,819 --> 01:09:48,069 >> 제이슨 허쉬 호른 : 루프. 1355 01:09:48,069 --> 01:09:52,020 1356 01:09:52,020 --> 01:09:55,330 그래서 우리는을 통해 루프에가는거야 의 모든 문자. 1357 01:09:55,330 --> 01:10:00,940 >> 그럼 우리는 무엇을하고 싶은거야 우리가 특정 문자를받을 때? 1358 01:10:00,940 --> 01:10:02,480 우리는 (90)를 통과 할 거에요 말한다. 1359 01:10:02,480 --> 01:10:03,460 우리는 9를 얻을. 1360 01:10:03,460 --> 01:10:04,240 그것은 문자입니다. 1361 01:10:04,240 --> 01:10:07,440 우리는 함께 수행 할 작업 그 문자 9? 1362 01:10:07,440 --> 01:10:10,082 >> 학생 : 문자 0에서 빼기? 1363 01:10:10,082 --> 01:10:11,860 >> 학생 : 0 추가? 1364 01:10:11,860 --> 01:10:13,350 >> 제이슨 허쉬 호른 : 빼기 문자 0에서 그것? 1365 01:10:13,350 --> 01:10:13,800 >> 학생 : 네. 1366 01:10:13,800 --> 01:10:15,573 >> 제이슨 허쉬 호른 : 왜 당신은 그렇게하고 싶어? 1367 01:10:15,573 --> 01:10:16,560 >> 학생 : [청취] 1368 01:10:16,560 --> 01:10:17,010 값. 1369 01:10:17,010 --> 01:10:18,380 그 int 값. 1370 01:10:18,380 --> 01:10:21,580 >> 제이슨 허쉬 호른 : OK, 그래서 우리는 수행 문자 9에서 빼기 1371 01:10:21,580 --> 01:10:25,820 문자 0을 얻을 수있는 실제 정수 9. 1372 01:10:25,820 --> 01:10:27,070 달콤한. 1373 01:10:27,070 --> 01:10:31,255 1374 01:10:31,255 --> 01:10:37,000 그리고 당신은 어떻게 그 문자를 알고 9 0을 뺀 문자 9입니까? 1375 01:10:37,000 --> 01:10:39,222 당신은 무엇에 차트보고 했습니까? 1376 01:10:39,222 --> 01:10:43,130 >> 학생 : 구 논리적 있습니다 9와 0 사이의 장소. 1377 01:10:43,130 --> 01:10:44,620 아니면 ASCII 표에서 볼 수 있었다. 1378 01:10:44,620 --> 01:10:45,120 >> 제이슨 허쉬 호른 : ASCII 테이블. 1379 01:10:45,120 --> 01:10:46,490 하지만 그래, 당신은뿐만 아니라 맞아요. 1380 01:10:46,490 --> 01:10:47,780 그래서 우리는 0을 뺍니다. 1381 01:10:47,780 --> 01:10:49,010 그래서 지금 우리는 정수 9있다. 1382 01:10:49,010 --> 01:10:49,970 그리고 우리는 그와 함께하고 싶어? 1383 01:10:49,970 --> 01:10:54,970 우리는 (90)이있는 경우에는, 제 정수의 정보 우리는 우리가 무엇을 원하는거야? 1384 01:10:54,970 --> 01:10:58,180 >> 학생 : 저는 임시 정수에 넣어 것 배열, 다음에 수학을 1385 01:10:58,180 --> 01:11:02,088 나중에 끝으로 그것을 만들 수 있습니다. 1386 01:11:02,088 --> 01:11:03,020 >> 제이슨 허쉬 호른 : OK. 1387 01:11:03,020 --> 01:11:06,990 >> 학생 : 당신은 말에 시작할 수 있습니다 다음 배열 그래서 앞으로 이동 1388 01:11:06,990 --> 01:11:10,350 당신이 앞으로 나아갈 때마다, 당신은 10을 곱합니다. 1389 01:11:10,350 --> 01:11:10,830 >> 제이슨 허쉬 호른 : OK. 1390 01:11:10,830 --> 01:11:12,250 즉, 꽤 같은 소리 뛰어난 아이디어. 1391 01:11:12,250 --> 01:11:16,040 우리는 우리의 배열의 끝에서 시작할 수 있습니다, 우리는 strleng을 사용할 수 있습니다. 1392 01:11:16,040 --> 01:11:17,030 우리는 여기에서 strleng을 사용할 수 있습니다. 1393 01:11:17,030 --> 01:11:18,870 우리는 우리의 문자열의 길이를 얻을 수 있습니다. 1394 01:11:18,870 --> 01:11:20,100 우리는 끝에서 시작합니다. 1395 01:11:20,100 --> 01:11:29,170 그리고 + 첫 번째를, 우리는 그냥 가지고 그 정수, 어쩌면 우리는 같이 작성 1396 01:11:29,170 --> 01:11:32,270 새로운 정수 변수까지 최고 위치 우리는 모든 것을 저장하는 중입니다. 1397 01:11:32,270 --> 01:11:37,340 에서의 모든 문자를 통해 우리 루프 뒤에서 앞으로, 우리는 0을 빼야하고, 1398 01:11:37,340 --> 01:11:42,790 우리는 그것을 가지고,과에 따라 어디, 우리는 그것을 곱 1399 01:11:42,790 --> 01:11:45,860 10의 힘으로. 1400 01:11:45,860 --> 01:11:50,644 때문에 첫 번째, 우리가 할 가장 오른쪽에있는 문자를 곱? 1401 01:11:50,644 --> 01:11:51,440 >> 학생 : 0 10. 1402 01:11:51,440 --> 01:11:53,170 >> 제이슨 허쉬 호른 : 0 10. 1403 01:11:53,170 --> 01:11:56,010 우리는 두 번째에게 무엇을 곱 않습니다 가장 오른쪽에있는 문자로? 1404 01:11:56,010 --> 01:11:57,450 >> 학생 : [청취]. 1405 01:11:57,450 --> 01:11:57,960 >> 제이슨 허쉬 호른 : 무엇? 1406 01:11:57,960 --> 01:11:59,150 >> 학생 : 1 ~ 10. 1407 01:11:59,150 --> 01:12:00,420 >> 제이슨 허쉬 호른 : 1 ~ 10. 1408 01:12:00,420 --> 01:12:03,754 제 오른쪽 문자? 1409 01:12:03,754 --> 01:12:04,580 >> 학생 : 2 10. 1410 01:12:04,580 --> 01:12:05,350 >> 제이슨 허쉬 호른 : 2 10. 1411 01:12:05,350 --> 01:12:07,200 >> 학생 : 죄송합니다, 이해가 안 우리는 여기에서 무슨 일을하는지. 1412 01:12:07,200 --> 01:12:08,640 >> 제이슨 허쉬 호른 : OK, 의 다음, 다시 가자. 1413 01:12:08,640 --> 01:12:12,500 그래서 우리가받을거야 문자열에 전달. 1414 01:12:12,500 --> 01:12:14,470 우리는 atoi와를 작성하고 있기 때문이다. 1415 01:12:14,470 --> 01:12:15,260 그래서 우리는 문자열로 전달받을. 1416 01:12:15,260 --> 01:12:17,640 우리가 건네지고있어 말 문자열 90. 1417 01:12:17,640 --> 01:12:19,930 >> 우리가 할거야 먼저 설정한다 우리가있어 새로운 정수 변수 1418 01:12:19,930 --> 01:12:22,150 단지 만들 것 우리의 새로운 정수. 1419 01:12:22,150 --> 01:12:24,630 즉, 우리가가는 방향 마지막에 돌아갑니다. 1420 01:12:24,630 --> 01:12:30,110 우리는 모든 문자를 통해 갈 필요가 문자열을 우리가 결정했습니다 때문에 1421 01:12:30,110 --> 01:12:34,430 우리는 서로를 만질 필요가 것을 다음 우리의 새로운 정수에 추가합니다. 1422 01:12:34,430 --> 01:12:36,330 >> 그러나 우리는 단지 숫자로 추가 할 수 없습니다. 1423 01:12:36,330 --> 01:12:38,270 우리는 단지 9을 할 수 없으며, 우리의 정수로 9를 추가합니다. 1424 01:12:38,270 --> 01:12:40,560 그것은 어떤 장소에 따라 달라집니다 그것은 문자열입니다. 1425 01:12:40,560 --> 01:12:42,960 우리는 곱 필요 해요 그것은 10의 힘으로. 1426 01:12:42,960 --> 01:12:45,580 그 때문에 어떻게 기본 10 작품. 1427 01:12:45,580 --> 01:12:49,050 >> 그래서 우리는 실제를받을거야 문자 또는 실제 정수 1428 01:12:49,050 --> 01:12:53,860 숫자, 문자 0을 감산함으로써 문자 9 우리가했던 것처럼에서 1429 01:12:53,860 --> 01:12:57,560 에서 문자 자본을 뺀 우리는 하나에 있던 어떤 문자 1430 01:12:57,560 --> 01:12:58,120 그 문제. 1431 01:12:58,120 --> 01:13:04,190 그래서 우리는 실제로 0의 숫자를 얻을 수 있습니다 9는 실수로 저장하고, 우리는거야 1432 01:13:04,190 --> 01:13:07,590 따라서 10의 거듭 제곱을 곱 우리는 문자열에있는 위치에. 1433 01:13:07,590 --> 01:13:19,430 1434 01:13:19,430 --> 01:13:22,575 그리고 우리는 그것을 다시 추가거야 우리의 새로운 정수 변수에. 1435 01:13:22,575 --> 01:13:32,840 1436 01:13:32,840 --> 01:13:37,890 >> 그래서이는 것처럼 보일 것입니다 우리는 여기에 그릴 거 야 - 수. 1437 01:13:37,890 --> 01:13:40,086 우리는 문자열 (90)로 전달받을 경우 -을 1438 01:13:40,086 --> 01:13:41,336 >> 학생 : [청취]. 1439 01:13:41,336 --> 01:13:43,190 1440 01:13:43,190 --> 01:13:45,540 >> 제이슨 허쉬 호른 :하지만 atoi와는 문자열을 사용합니다. 1441 01:13:45,540 --> 01:13:46,350 그래서 우리는 통과거야 보유. 1442 01:13:46,350 --> 01:13:49,900 우리는 90로 전달받을 수 있습니다. 1443 01:13:49,900 --> 01:13:51,540 우리는 후방으로부터 전방 간다. 1444 01:13:51,540 --> 01:13:53,920 우리는 0을. 1445 01:13:53,920 --> 01:13:55,080 >> 학생 : 미안 해요. 1446 01:13:55,080 --> 01:13:55,880 어쩌면이 바보입니다. 1447 01:13:55,880 --> 01:13:59,440 우리는 문자열에 전달 받고 있다면, 왜 우리가 왜 왔는지 90 1448 01:13:59,440 --> 01:14:00,260 전달 받고? 1449 01:14:00,260 --> 01:14:03,160 (90)은 정수이기 때문에. 1450 01:14:03,160 --> 01:14:06,820 >> 제이슨 허쉬 호른 : atoi와는 걸리기 때문에 문자열과 정수로 변환합니다 1451 01:14:06,820 --> 01:14:08,320 해당 문자열의 표현입니다. 1452 01:14:08,320 --> 01:14:13,650 그러나 문자열 (90)는 정수가 90 수 90. 1453 01:14:13,650 --> 01:14:17,920 문자열 (90)는 두 가지의 배열 또는이다 세 문자 오히려 구 1454 01:14:17,920 --> 01:14:22,740 문자, 0 문자 및 백 슬래시 0 문자. 1455 01:14:22,740 --> 01:14:26,260 >> 그리고 우리는 때문에,에 atoi와를 작성하는 예를 들어, 당신은 명령을 수행 할 때 1456 01:14:26,260 --> 01:14:30,230 행 인수, 그것은 저장 것 ARGV, 그것은 문자열로 저장 있어요. 1457 01:14:30,230 --> 01:14:32,940 하지만 당신은 숫자로 취급하려는 경우, 는로 변환 할 필요 1458 01:14:32,940 --> 01:14:34,700 실제 정수입니다. 1459 01:14:34,700 --> 01:14:37,210 어떤 우리가 우리의 문제 세트 중 하나를했다. 1460 01:14:37,210 --> 01:14:38,800 우리는 다수 않았다 우리의 문제 세트. 1461 01:14:38,800 --> 01:14:41,690 정수를했다 모두 명령 줄 인수로. 1462 01:14:41,690 --> 01:14:46,490 그래서 그 이유는 우리의 atoi와 기능 문자열을 사용합니다. 1463 01:14:46,490 --> 01:14:51,910 >> 그래서 다시, 여기에 우리의 예제에서, 우리는거야 마지막 하나를 것. 1464 01:14:51,910 --> 01:14:55,050 우리는 문자를 뺄거​​야 그것에서 공 때문에 문자 0 1465 01:14:55,050 --> 01:14:58,810 문자 0 뺀 ​​당신에게 제공 에 따라 실제 숫자 0, 1466 01:14:58,810 --> 01:15:00,950 우리가 ASCII 수학. 1467 01:15:00,950 --> 01:15:04,870 >> 문자로 표현되어 있기 때문에 실제와는 다른 - 1468 01:15:04,870 --> 01:15:08,830 문자, 예를 들면, 소문자 a는 97입니다. 1469 01:15:08,830 --> 01:15:10,260 그것은 아니에요 - 죄송합니다! 1470 01:15:10,260 --> 01:15:13,290 그것은 당신이 기대하는대로 아니다 그것은 예를 들어, 0이 될 수 있습니다. 1471 01:15:13,290 --> 01:15:16,200 그래서 당신은 빼기해야 문자 0을 얻을 수 있습니다. 1472 01:15:16,200 --> 01:15:18,950 >> 그래서 우리는 여기에서 그렇게 할거야 실제 수를 얻을 수 있습니다. 1473 01:15:18,950 --> 01:15:22,560 그리고 우리를 곱 예정 10의 힘은 어디에 따라 1474 01:15:22,560 --> 01:15:27,030 문자열에, 그리고 그 다음을 우리의 자리 표시 자에 추가 1475 01:15:27,030 --> 01:15:32,520 변수 그래서 우리는 가지고 올 수 우리의 마지막 새로운 정수입니다. 1476 01:15:32,520 --> 01:15:35,080 즉, 모든 사람에게 의미가 있습니까? 1477 01:15:35,080 --> 01:15:37,730 >> 그래서 우리는이 코드를하지 않을거야 지금 때문에 우린 1478 01:15:37,730 --> 01:15:38,830 짧은 시간에 얻는. 1479 01:15:38,830 --> 01:15:40,860 그 타이밍을 드려 죄송합니다. 1480 01:15:40,860 --> 01:15:44,620 그러나 이것은 무엇을, 희망, 당신은 것입니다 에 - 퀴즈에 할 수있을 1481 01:15:44,620 --> 01:15:47,710 적어도,이 의사를 얻을 수 기입. 1482 01:15:47,710 --> 01:15:50,840 >> 그리고, 우리가 인 경우에 작성 의사는, 실제로, 우리는이 작업을 수행 할 수 1483 01:15:50,840 --> 01:15:51,490 꽤 빨리. 1484 01:15:51,490 --> 01:15:55,230 우리는 우리가 쓴 댓글의 각 행 여기에 약으로 변환 1485 01:15:55,230 --> 01:15:56,970 C 코드 한 줄. 1486 01:15:56,970 --> 01:16:01,780 새 변수, 쓰기를 선언 루프, 일부 뺄셈, 일​​부 1487 01:16:01,780 --> 01:16:07,070 곱셈, 일부 할당. 1488 01:16:07,070 --> 01:16:09,020 우리는 또한 아마 싶어 리턴 라인을 작성합니다. 1489 01:16:09,020 --> 01:16:12,040 우리는 또한 넣어 할 수 있습니다 여기에 몇 가지를 확인합니다. 1490 01:16:12,040 --> 01:16:12,655 그래. 1491 01:16:12,655 --> 01:16:15,720 >> 학생 : 그래서 우리가 처리 할 수 실제 문자열의? 1492 01:16:15,720 --> 01:16:18,730 내가 알고 있기 때문에 그냥 주소입니다. 1493 01:16:18,730 --> 01:16:22,090 마찬가지로, 당신은 어떻게 길이를 얻을 것 문자열을 통해 전달되는? 1494 01:16:22,090 --> 01:16:25,310 >> 제이슨 허쉬 호른 : 어떻게 한 문자열의 길이? 1495 01:16:25,310 --> 01:16:25,830 나 strlen. 1496 01:16:25,830 --> 01:16:26,660 >> 학생 : 나 strlen, 그래. 1497 01:16:26,660 --> 01:16:30,550 하지만 당신은 같이의를 둘 수있다 그에 대한 인수? 1498 01:16:30,550 --> 01:16:34,620 >> 제이슨 허쉬 호른 : 그래서 나 strlen 문자 스타 걸립니다. 1499 01:16:34,620 --> 01:16:38,090 그리고 그 문자 스타를 따라하고, 가에 도달 할 때까지 카운트를 계속합니다 1500 01:16:38,090 --> 01:16:41,865 백 슬래시 0. strlen 함수는 사실은 다른 프로그램 중 하나 우리 1501 01:16:41,865 --> 01:16:42,850 코드에 가고 있었다. 1502 01:16:42,850 --> 01:16:44,560 즉, 코드에 대한 또 다른 좋은 하나입니다. 1503 01:16:44,560 --> 01:16:47,270 그 하나는, 조금 쉽게하는 경우 때문에 당신은 그것에 대해 생각하는거야 1504 01:16:47,270 --> 01:16:47,830 개념적으로 - 1505 01:16:47,830 --> 01:16:51,620 난 그냥 큰소리로 말하지 - strlen 함수는 다음과 포인터 및 유지 가서 1506 01:16:51,620 --> 01:16:54,210 계산 때까지를 추적 백 슬래시 0에 도달합니다. 1507 01:16:54,210 --> 01:16:56,530 >> 학생 : OK, 그것을 얻었다. 1508 01:16:56,530 --> 01:17:00,200 >> 제이슨 허쉬 호른 : 너무 최고 퀴즈 0 내일에 행운. 1509 01:17:00,200 --> 01:17:03,170 당신은 질문이있는 경우에는, 나는거야 이 후 외부합니다. 1510 01:17:03,170 --> 01:17:05,610 나에게 이메일을 보내 주시기 바랍니다. 1511 01:17:05,610 --> 01:17:08,480 당신이 경우에 당신의 자신의 TF에 다가 내 섹션에서, 또는하지 내 1512 01:17:08,480 --> 01:17:10,005 당신이 그것을 원하는 경우 이메일을 보내십시오. 1513 01:17:10,005 --> 01:17:13,140 >> 당신은 놀라게하고 싶지 그냥 보내는 경우 나 이메일, freakout 이메일, 나는거야 1514 01:17:13,140 --> 01:17:16,710 , 웃는 얼굴처럼, 당신을 다시 보내 나 같은, 농담이나 뭐. 1515 01:17:16,710 --> 01:17:18,190 그래서뿐만 아니라 그렇게 할 주시기 바랍니다. 1516 01:17:18,190 --> 01:17:20,750 행운을 빌어 다시, 나는거야 모두 다음 주를 참조하십시오. 1517 01:17:20,750 --> 01:17:23,435