1 00:00:00,000 --> 00:00:02,670 >> [THEME MUSIC] 2 00:00:02,670 --> 00:00:11,834 3 00:00:11,834 --> 00:00:13,365 >> SPEAKER 1: Hi, tất cả mọi người. 4 00:00:13,365 --> 00:00:14,365 Chào mừng trở lại phần. 5 00:00:14,365 --> 00:00:15,700 6 00:00:15,700 --> 00:00:18,700 Đáng yêu ngày out-- đó là lý do tại sao, tôi chắc chắn, chỉ có bốn của bạn đang ở đây 7 00:00:18,700 --> 00:00:21,180 và không gói thông thường của chúng tôi. 8 00:00:21,180 --> 00:00:22,670 Tôi đã bị ốm vào cuối tuần này. 9 00:00:22,670 --> 00:00:24,294 Vì vậy, tôi không có Starburst cho các bạn. 10 00:00:24,294 --> 00:00:26,400 Và tôi có thể bắt đầu ho khủng khiếp trong suốt này. 11 00:00:26,400 --> 00:00:27,790 Vì vậy, chỉ chịu với tôi. 12 00:00:27,790 --> 00:00:30,624 Tôi sẽ thực sự cố gắng và nhận được thông qua này đầu tiên, 13 00:00:30,624 --> 00:00:32,290 Mặc dù vậy, trước khi tôi có một cuộc tấn công ho. 14 00:00:32,290 --> 00:00:33,410 15 00:00:33,410 --> 00:00:37,390 Nhưng chỉ được dễ dàng trên tôi một ít bit-- đó là tất cả tôi hỏi. 16 00:00:37,390 --> 00:00:39,370 17 00:00:39,370 --> 00:00:44,289 >> Vì vậy, chương trình nghị sự của chúng tôi cho today-- chỉ là một reminder-- bài kiểm tra của bạn là vào tuần tới. 18 00:00:44,289 --> 00:00:46,830 Tôi đã nói với bạn vào tuần cuối cùng này để nó sẽ không bắt bạn mất cảnh giác. 19 00:00:46,830 --> 00:00:47,954 Vì vậy, tôi nhắc nhở bạn một lần nữa. 20 00:00:47,954 --> 00:00:49,180 Tuần tiếp theo của bài kiểm tra của bạn. 21 00:00:49,180 --> 00:00:52,730 Cuối cùng, vào tuần tới phần sẽ được nhiều hơn nữa 22 00:00:52,730 --> 00:00:55,180 of-- tôi sẽ cố gắng và làm việc tại một số xem xét. 23 00:00:55,180 --> 00:00:58,130 Vì vậy, nếu các bạn có thể giúp tôi hiểu bằng cách gửi cho tôi 24 00:00:58,130 --> 00:01:00,990 những điều mà bạn cảm thấy thoải mái với, mà bạn đang lo lắng về, 25 00:01:00,990 --> 00:01:03,530 chủ đề mà bạn muốn cho tôi để trang trải, mà muốn được tuyệt vời. 26 00:01:03,530 --> 00:01:05,740 Vì vậy, tôi có thể cố gắng và làm việc cho họ thành phần của chúng tôi vào tuần tới 27 00:01:05,740 --> 00:01:11,540 hoặc gửi cho bạn các tài liệu bổ sung hoặc chuẩn bị mà bạn có thể không nhận được ở nơi khác. 28 00:01:11,540 --> 00:01:12,150 >> Yeah! 29 00:01:12,150 --> 00:01:13,520 Nhiều người đang đến! 30 00:01:13,520 --> 00:01:17,320 Tôi nghĩ, tôi đã làm điều đó tồi tệ cuối cùng tuần, mà không ai muốn trở lại? 31 00:01:17,320 --> 00:01:18,065 Tôi sợ hãi. 32 00:01:18,065 --> 00:01:18,892 33 00:01:18,892 --> 00:01:21,100 Vì vậy, ba điều khác rằng chúng ta sẽ đi qua 34 00:01:21,100 --> 00:01:24,850 là chuyển hướng, tập tin I / O, và sau đó con trỏ và bộ nhớ động. 35 00:01:24,850 --> 00:01:29,160 Tôi chắc rằng bạn tất cả các siêu vui mừng về pointers-- chủ đề ưa thích của mọi người, 36 00:01:29,160 --> 00:01:31,310 rất đơn giản để hiểu. 37 00:01:31,310 --> 00:01:33,130 Tôi chắc rằng tất cả các bạn có điều đó, phải không? 38 00:01:33,130 --> 00:01:39,510 >> Vì vậy, điều đầu tiên đầu tiên, redirection-- này về cơ bản chỉ là một cách 39 00:01:39,510 --> 00:01:42,920 để kiểm soát cách bạn nhập vào thứ vào chương trình của bạn, 40 00:01:42,920 --> 00:01:44,606 làm thế nào bạn điều đầu ra từ chương trình của bạn. 41 00:01:44,606 --> 00:01:46,980 Những cách chính mà các bạn đã được tương tác với nó 42 00:01:46,980 --> 00:01:51,650 chỉ là thông qua ra tiêu chuẩn với màn hình in ấn của bạn ở đây. 43 00:01:51,650 --> 00:01:55,940 Nhưng có nhiều cách để pipe-- như chúng ta thấy ở đây 44 00:01:55,940 --> 00:01:58,980 là một trong những loại words-- của chúng tôi ống thông tin 45 00:01:58,980 --> 00:02:02,850 hoặc dữ liệu đó vào một tập tin từ một tập tin. 46 00:02:02,850 --> 00:02:05,820 Đó là cách chỉ khác nhau nhận được những điều vào chương trình của bạn 47 00:02:05,820 --> 00:02:10,681 và ra khỏi chương trình của bạn, thay vì chỉ in chúng vào màn hình này 48 00:02:10,681 --> 00:02:12,430 hoặc nhập vào các điều từ dòng lệnh. 49 00:02:12,430 --> 00:02:13,760 50 00:02:13,760 --> 00:02:18,030 >> Vì vậy, đầu tiên là ít lớn hơn caret. 51 00:02:18,030 --> 00:02:22,085 Vì vậy, output-- nó chỉ in ra vào một tập tin thay vì màn hình của bạn. 52 00:02:22,085 --> 00:02:23,620 53 00:02:23,620 --> 00:02:29,500 Vì vậy, nếu bạn đã có một cái gì đó in "Hello, world!" vào màn hình, 54 00:02:29,500 --> 00:02:32,400 nếu bạn đặt nó thay vì để output.text, mà 55 00:02:32,400 --> 00:02:35,220 tạo ra tập tin này được gọi là output.text. 56 00:02:35,220 --> 00:02:38,550 Và khi bạn mở nó, nó sẽ thấy nói "Hello, world!" trong đó. 57 00:02:38,550 --> 00:02:41,410 Đây có thể là siêu hữu ích nếu bạn có một tấn lỗi 58 00:02:41,410 --> 00:02:43,430 trên thực tế, như chúng ta thấy trong vụ việc này. 59 00:02:43,430 --> 00:02:46,810 Nếu bạn làm hai dấu nháy, nó sẽ thấy in các thông báo lỗi. 60 00:02:46,810 --> 00:02:52,090 >> Vì vậy, nếu bạn đang có một vấn đề với biên dịch, nó có rất nhiều sai sót 61 00:02:52,090 --> 00:02:56,770 và bạn đang bị sa lầy trong cố gắng để di chuyển qua trong dòng lệnh của bạn 62 00:02:56,770 --> 00:02:59,110 qua tất cả chúng, bạn có thể chỉ in chúng vào một tập tin, 63 00:02:59,110 --> 00:03:02,130 mở tập tin đó để bạn có thể di chuyển qua chúng dễ dàng hơn. 64 00:03:02,130 --> 00:03:05,160 Tôi thực sự sử dụng một khi rất nhiều tôi đã được gỡ lỗi 65 00:03:05,160 --> 00:03:07,970 181 psets của tôi cho máy tính học tập. 66 00:03:07,970 --> 00:03:10,000 Vì vậy, nó có thể được siêu hữu ích sau này. 67 00:03:10,000 --> 00:03:18,370 Nó cũng hữu ích nếu bạn có một chương trình rằng có thể là tạo ra một thư viện 68 00:03:18,370 --> 00:03:20,430 hoặc tạo ra một số bộ của chuỗi, và bạn 69 00:03:20,430 --> 00:03:22,846 cần để có thể thấy rằng nó tạo ra chúng đúng cách. 70 00:03:22,846 --> 00:03:23,860 71 00:03:23,860 --> 00:03:25,160 Đây là cách để làm điều đó. 72 00:03:25,160 --> 00:03:28,280 >> Vì vậy, nếu bạn in chúng vào một tập tin, bạn có thể dễ dàng kiểm tra chúng, phải không? 73 00:03:28,280 --> 00:03:30,930 So với cố gắng để di chuyển thông qua dòng lệnh của bạn. 74 00:03:30,930 --> 00:03:32,740 75 00:03:32,740 --> 00:03:35,820 Và rồi một điều cần lưu ý là với chỉ lớn hơn 76 00:03:35,820 --> 00:03:40,090 hơn caret, nếu bạn đang viết vào một tập tin đã exists-- 77 00:03:40,090 --> 00:03:44,990 do đó, như nếu chúng ta chạy này đầu tiên thời gian, chúng tôi đặt nó vào output.text, 78 00:03:44,990 --> 00:03:49,970 và sau đó chúng tôi đã có một chương trình thứ hai mà in này như là chương trình hai 79 00:03:49,970 --> 00:03:54,250 và đã làm một lớn hơn để output.text, nó sẽ ghi đè lên that-- như vậy 80 00:03:54,250 --> 00:03:56,715 ghi đè lên những gì đã từng ở tập tin đó để bắt đầu với. 81 00:03:56,715 --> 00:03:57,720 82 00:03:57,720 --> 00:04:00,750 >> Vì vậy, nếu bạn muốn thêm vào một tập tin, như chúng ta thấy ở đây, 83 00:04:00,750 --> 00:04:04,779 bạn chỉ cần làm hai dấu hiệu lớn hơn. 84 00:04:04,779 --> 00:04:05,820 Và nó sẽ gắn thêm vào nó. 85 00:04:05,820 --> 00:04:06,750 Nó sẽ không ghi đè lên nó. 86 00:04:06,750 --> 00:04:09,770 Vì vậy, nếu bạn cần phải chạy nhiều chương trình và loại giữ 87 00:04:09,770 --> 00:04:13,170 theo dõi những gì tất cả chúng đều hoàn lại cho bạn trong một tập tin, 88 00:04:13,170 --> 00:04:14,190 đó là một cách để làm điều đó. 89 00:04:14,190 --> 00:04:17,231 Nếu bạn không quan tâm những gì trong tập tin của bạn và nó được phép ghi đè, 90 00:04:17,231 --> 00:04:19,204 bạn chỉ có thể sử dụng một lớn hơn đơn hơn. 91 00:04:19,204 --> 00:04:20,600 Điều đó có ý nghĩa với tất cả mọi người? 92 00:04:20,600 --> 00:04:23,205 93 00:04:23,205 --> 00:04:31,140 >> Đung như chấm giảm chào lớn hơn hơn sản lượng chấm văn bản, như hai lần, 94 00:04:31,140 --> 00:04:34,030 nó sẽ chỉ chỉ hiển thị trên đầu ra dot văn bản một time-- thứ hai 95 00:04:34,030 --> 00:04:34,810 >> SPEAKER 1: Đúng vậy. 96 00:04:34,810 --> 00:04:40,450 Vì vậy, về cơ bản nó sẽ chỉ hoàn toàn ghi đè lên những gì đã có để bắt đầu với. 97 00:04:40,450 --> 00:04:44,260 Nếu tập tin này ở đây, output.text đã 98 00:04:44,260 --> 00:04:48,230 tồn tại, về cơ bản bất cứ điều gì bạn gọi một lần nữa với một lớn duy nhất 99 00:04:48,230 --> 00:04:51,920 hơn bạn có thể chỉ cần nghĩ về nó như như nó thay thế các tập tin. 100 00:04:51,920 --> 00:04:54,824 Giống như khi bạn đang tiết kiệm một Word tài liệu và bạn tiết kiệm như, 101 00:04:54,824 --> 00:04:57,365 và bạn tiếp tục cùng tên, và nó hoàn toàn ghi đè it-- 102 00:04:57,365 --> 00:04:58,680 đây là cùng một loại điều. 103 00:04:58,680 --> 00:05:00,380 104 00:05:00,380 --> 00:05:03,550 Bất cứ ai có bất kỳ câu hỏi về chỉ xuất vào một tập tin? 105 00:05:03,550 --> 00:05:05,051 106 00:05:05,051 --> 00:05:05,550 Tuyệt vời. 107 00:05:05,550 --> 00:05:11,440 >> Vì vậy, rõ ràng là, nếu bạn đảo ngược mũi tên hướng, nó có thể làm đầu vào. 108 00:05:11,440 --> 00:05:13,090 109 00:05:13,090 --> 00:05:19,960 Vì vậy, khi các bạn đã có như Caesar hoặc VISIONEER 110 00:05:19,960 --> 00:05:23,195 và bạn phải đầu vào một cái gì đó, bạn đã có một đối số dòng lệnh 111 00:05:23,195 --> 00:05:24,960 mà thực sự đầu vào nó. 112 00:05:24,960 --> 00:05:27,410 Đây là một cách khác để làm điều đó. 113 00:05:27,410 --> 00:05:30,520 Vì vậy, thay vì chờ đợi cho một dấu nhắc lệnh, 114 00:05:30,520 --> 00:05:33,800 giống như khi bạn yêu cầu của bạn tin nhắn trong Caesar hoặc VISIONEER, 115 00:05:33,800 --> 00:05:36,490 nếu bạn đã có một tập tin văn bản mà đã có tin nhắn của bạn, 116 00:05:36,490 --> 00:05:38,280 bạn chỉ có thể gõ nó vào đó. 117 00:05:38,280 --> 00:05:44,930 >> Vì vậy, nếu điều này là như chấm giảm Caesar 3 ít hơn mũi tên văn bản đầu vào, mà 118 00:05:44,930 --> 00:05:47,240 là thông điệp của bạn, mà sẽ chỉ chạy tốt. 119 00:05:47,240 --> 00:05:51,310 120 00:05:51,310 --> 00:05:54,020 Khi chương trình Caesar của bạn thực sự yêu cầu đầu vào từ người dùng, 121 00:05:54,020 --> 00:05:57,360 nó sẽ đã có nó bởi vì bạn đã nhập vào tập tin này. 122 00:05:57,360 --> 00:05:58,830 Đó chỉ là một cách khác. 123 00:05:58,830 --> 00:06:02,445 Chỉ cần một đảo ngược của output-- chỉ đầu vào cho dữ liệu của bạn. 124 00:06:02,445 --> 00:06:04,570 125 00:06:04,570 --> 00:06:06,680 >> Và rồi cuối cùng là một ống. 126 00:06:06,680 --> 00:06:07,780 Vì vậy, cái này khá mát mẻ. 127 00:06:07,780 --> 00:06:09,890 Bởi vì nó cho phép bạn có đầu ra của một 128 00:06:09,890 --> 00:06:13,695 chương trình và đặt nó như là đầu vào cho chương trình khác. 129 00:06:13,695 --> 00:06:15,250 130 00:06:15,250 --> 00:06:18,630 Tôi không biết nếu có của bạn chơi với Decipher 131 00:06:18,630 --> 00:06:20,590 CS50 có thể có đưa cho bạn, nhưng nó sẽ 132 00:06:20,590 --> 00:06:27,380 cho phép bạn để có một số mẫu nộp, đánh nó vào mật mã của bạn, 133 00:06:27,380 --> 00:06:30,350 và sau đó từ đó gõ đó vào giải mã của bạn 134 00:06:30,350 --> 00:06:32,470 để đảm bảo nó bật ra như vậy. 135 00:06:32,470 --> 00:06:34,050 Vì vậy, nó là loại giống như ba chiều vòng lặp. 136 00:06:34,050 --> 00:06:38,400 137 00:06:38,400 --> 00:06:39,423 Đi cho nó. 138 00:06:39,423 --> 00:06:41,785 >> Đung Nếu một chương trình có nhiều đầu vào, 139 00:06:41,785 --> 00:06:47,646 là có một cách để cho nó mà đầu vào sử dụng các tập tin văn bản hoặc đầu ra cho? 140 00:06:47,646 --> 00:06:49,325 >> SPEAKER 1: Nó có nhiều đầu vào. 141 00:06:49,325 --> 00:06:52,190 142 00:06:52,190 --> 00:07:00,430 Dù nộp input-- của bạn khi nó yêu cầu đầu vào mà lần đầu tiên, đó là 143 00:07:00,430 --> 00:07:03,240 sẽ giả sử, tôi nghĩ rằng, đó là đi đường ống trong toàn bộ tập tin. 144 00:07:03,240 --> 00:07:03,979 145 00:07:03,979 --> 00:07:07,145 Vì vậy, nếu bạn có nhiều đầu vào, bạn sẽ được đường ống trong nhiều tập tin. 146 00:07:07,145 --> 00:07:08,190 147 00:07:08,190 --> 00:07:12,390 Vì vậy, nếu bạn đang yêu cầu cho các tin nhắn ba lần trong mã của bạn, 148 00:07:12,390 --> 00:07:15,230 bạn sẽ được đặt trong ba tập tin khác nhau. 149 00:07:15,230 --> 00:07:15,980 Và nó trở nên điên. 150 00:07:15,980 --> 00:07:18,188 Và bạn không cần phải lo lắng về điều đó ngay bây giờ. 151 00:07:18,188 --> 00:07:19,150 Nhưng đó là ý tưởng. 152 00:07:19,150 --> 00:07:20,680 153 00:07:20,680 --> 00:07:26,822 >> Vì vậy, yeah, ống chỉ là đầu ra của một chương trình sử dụng đầu vào khác. 154 00:07:26,822 --> 00:07:27,665 Tất cả mọi người tốt không? 155 00:07:27,665 --> 00:07:28,565 156 00:07:28,565 --> 00:07:29,065 Cool. 157 00:07:29,065 --> 00:07:30,170 158 00:07:30,170 --> 00:07:30,932 OK. 159 00:07:30,932 --> 00:07:32,890 Bạn có thể sẽ không có làm quá nhiều với nó. 160 00:07:32,890 --> 00:07:35,670 Nhưng bạn nên hiểu cách bạn có thể sử dụng này. 161 00:07:35,670 --> 00:07:38,910 Và có một số trường hợp bạn có thể muốn sử dụng nó. 162 00:07:38,910 --> 00:07:44,590 >> Vì vậy, tập tin I / O-- tôi biết những gì bạn đang saying-- chúng tôi đang sử dụng để đọc từ 163 00:07:44,590 --> 00:07:50,500 và văn bản cho màn hình của chúng tôi ở đó, đó là tiêu chuẩn và tiêu chuẩn ra. 164 00:07:50,500 --> 00:07:54,370 Và đó là những gì các bạn đã làm kể từ đầu lớp ở đây. 165 00:07:54,370 --> 00:07:58,220 Nhưng bạn cũng có thể đọc và viết các tập tin, đó là tất cả các tập tin I / O-- để nộp đầu vào, 166 00:07:58,220 --> 00:07:59,850 đầu ra là tất cả đứng của nó. 167 00:07:59,850 --> 00:08:00,930 168 00:08:00,930 --> 00:08:04,360 Vì vậy, về cơ bản này có nghĩa là bạn có thể lưu trữ dữ liệu của bạn bây giờ. 169 00:08:04,360 --> 00:08:08,460 >> Khi bạn chỉ cần in đến màn hình, nó về cơ bản đi, phải không? 170 00:08:08,460 --> 00:08:12,507 Ngay sau khi bạn thực hiện "Hello thế giới "và chạy" Hello world " 171 00:08:12,507 --> 00:08:14,090 nó in "Hello world" lên màn hình. 172 00:08:14,090 --> 00:08:16,370 Nhưng bạn có thể không thực sự làm bất cứ điều gì với nó từ đó. 173 00:08:16,370 --> 00:08:18,950 Nếu bạn lưu trữ trong một văn bản tập tin, sau đó đột nhiên 174 00:08:18,950 --> 00:08:22,789 bạn có dữ liệu này mà bạn đang được cho phép để thao tác hoặc đặt nó vào một tập tin, 175 00:08:22,789 --> 00:08:24,080 hoặc đặt nó vào một chương trình sau đó. 176 00:08:24,080 --> 00:08:26,370 177 00:08:26,370 --> 00:08:29,290 Một trong những lý do lý do tại sao chúng tôi làm điều này chỉ là 178 00:08:29,290 --> 00:08:31,560 như một cách để lưu trữ dữ liệu để sử dụng sau. 179 00:08:31,560 --> 00:08:34,790 180 00:08:34,790 --> 00:08:37,279 >> Tôi có một vài bước sau đây chỉ đi qua tiêu chuẩn 181 00:08:37,279 --> 00:08:39,450 I / O. Trong bước một, bạn cần phải tạo ra một tài liệu tham khảo 182 00:08:39,450 --> 00:08:43,480 để các tập tin với tất cả mũ NỘP tập tin sao. 183 00:08:43,480 --> 00:08:45,740 Vì vậy, tạo ra một con trỏ đến một tập tin. 184 00:08:45,740 --> 00:08:48,080 185 00:08:48,080 --> 00:08:49,650 Vì vậy, sau đó bạn muốn để mở nó. 186 00:08:49,650 --> 00:08:52,940 Và bạn nói, theo nghĩa đen, chỉ tập tin bằng fopen. 187 00:08:52,940 --> 00:08:57,400 Và điều này sẽ trả về một con trỏ đến tập tin bạn vừa mở. 188 00:08:57,400 --> 00:08:59,610 189 00:08:59,610 --> 00:09:01,460 Tôi thấy một vài bạn guys tại giờ hành chính. 190 00:09:01,460 --> 00:09:07,400 >> Nhưng một trong những điều là con trỏ remember-- 191 00:09:07,400 --> 00:09:10,409 có thể có một số địa chỉ hoặc null, phải không? 192 00:09:10,409 --> 00:09:12,700 Nếu chúng ta từng có một trường hợp một cái gì đó có thể trở về null, 193 00:09:12,700 --> 00:09:14,990 chúng ta có gì để làm trước khi chúng ta sử dụng nó? 194 00:09:14,990 --> 00:09:16,220 195 00:09:16,220 --> 00:09:19,000 Chúng tôi cần phải kiểm tra xem nó là null hay không, phải không? 196 00:09:19,000 --> 00:09:23,600 Bởi vì một số bạn có thể đã có vấn đề mà bất cứ đối tượng 197 00:09:23,600 --> 00:09:26,110 đã được trả lại trong breakout là null. 198 00:09:26,110 --> 00:09:28,170 Bạn đã cố gắng để thực hiện một số chức năng trên đó. 199 00:09:28,170 --> 00:09:29,770 Và trang web máy tính của bạn bị sự cố. 200 00:09:29,770 --> 00:09:30,725 Phải không? 201 00:09:30,725 --> 00:09:33,640 Tôi đặt cược một vài bạn có thể đã có vấn đề đó. 202 00:09:33,640 --> 00:09:38,890 >> Vì vậy, với fopen, fopen hoặc sẽ trả về một con trỏ đến các tập tin, 203 00:09:38,890 --> 00:09:41,200 hoặc nếu có điều gì sai, nó sẽ trả về null. 204 00:09:41,200 --> 00:09:45,980 Vì vậy, bạn luôn cần phải kiểm tra rằng nó đã không trở về rỗng 205 00:09:45,980 --> 00:09:47,880 trước khi bạn cố gắng làm bất cứ điều gì khác. 206 00:09:47,880 --> 00:09:49,110 207 00:09:49,110 --> 00:09:51,974 Điều này giống như một hệ thống chuẩn rằng bạn sẽ cần ở đây. 208 00:09:51,974 --> 00:09:54,390 Nếu có bao giờ một cơ hội mà một cái gì đó có thể trở về null, 209 00:09:54,390 --> 00:09:56,590 kiểm tra để chắc chắn rằng nó không trước khi bạn tiến hành. 210 00:09:56,590 --> 00:09:58,911 Nếu không, bạn sẽ để có được lỗi trang web đáng yêu. 211 00:09:58,911 --> 00:10:00,410 Và không ai thích để đối phó với những người. 212 00:10:00,410 --> 00:10:03,180 213 00:10:03,180 --> 00:10:06,410 >> Vì vậy, như chúng ta thấy ở đây, đối số đầu tiên chỉ là đường dẫn đến tập tin. 214 00:10:06,410 --> 00:10:09,380 Nếu tập tin không tồn tại, nó sẽ tạo ra tập tin đó. 215 00:10:09,380 --> 00:10:10,713 Và nó không chỉ sẽ được để trống. 216 00:10:10,713 --> 00:10:10,789 217 00:10:10,789 --> 00:10:13,080 Và sau đó tham số thứ hai là chế độ mà bạn muốn. 218 00:10:13,080 --> 00:10:14,610 Chúng ta có muốn đọc từ tập tin này? 219 00:10:14,610 --> 00:10:15,560 Bạn có muốn viết từ nó? 220 00:10:15,560 --> 00:10:16,476 Bạn có muốn thêm? 221 00:10:16,476 --> 00:10:17,600 222 00:10:17,600 --> 00:10:20,670 Vì vậy, thực tế những gì tôi chỉ said-- nếu các tập tin không tồn tại 223 00:10:20,670 --> 00:10:23,400 và bạn đang cố gắng để đọc từ nó, nó sẽ ném ra một lỗi. 224 00:10:23,400 --> 00:10:26,890 Nếu tập tin name-- thích nếu file.text chưa tồn tại 225 00:10:26,890 --> 00:10:29,250 và bạn muốn viết với nó, nó sẽ tạo ra 226 00:10:29,250 --> 00:10:33,110 một tập tin trống gọi là file.text cho bạn. 227 00:10:33,110 --> 00:10:36,612 Và nếu bạn muốn thêm, bạn nên làm điều tương tự. 228 00:10:36,612 --> 00:10:38,081 Điều đó có ý nghĩa? 229 00:10:38,081 --> 00:10:40,580 Nếu bạn đang cố gắng để đọc từ một tập tin đó chưa tồn tại, 230 00:10:40,580 --> 00:10:41,590 nó sẽ ném ra một lỗi. 231 00:10:41,590 --> 00:10:44,340 Nếu không, nó sẽ tạo ra các tập tin cho bạn làm những gì bạn muốn nó. 232 00:10:44,340 --> 00:10:45,970 233 00:10:45,970 --> 00:10:46,470 Cool. 234 00:10:46,470 --> 00:10:47,510 235 00:10:47,510 --> 00:10:48,880 Bây giờ chúng ta có thể đọc từ tập tin. 236 00:10:48,880 --> 00:10:52,570 Và đây chỉ là loại đi thông qua các chức năng khác nhau 237 00:10:52,570 --> 00:10:58,980 rằng chúng tôi đã cho tập tin I / O. Điều này sẽ là cần thiết trong pset tuần này, 238 00:10:58,980 --> 00:11:00,505 nếu tôi nhớ chính xác. 239 00:11:00,505 --> 00:11:02,880 Có, nó hoàn toàn sẽ cần thiết trong pset tuần này. 240 00:11:02,880 --> 00:11:04,260 241 00:11:04,260 --> 00:11:07,010 Vì vậy, fgetc trả về ký tự tiếp theo. 242 00:11:07,010 --> 00:11:08,350 243 00:11:08,350 --> 00:11:10,300 fgets chỉ trả về một dòng văn bản. 244 00:11:10,300 --> 00:11:11,790 245 00:11:11,790 --> 00:11:14,610 Nó sẽ trở lại bất cứ điều gì lên đến một dòng mới, và nó sẽ phá vỡ. 246 00:11:14,610 --> 00:11:15,950 247 00:11:15,950 --> 00:11:18,700 Vì vậy, fread đọc một số số byte và những nơi họ 248 00:11:18,700 --> 00:11:20,700 vào một mảng, mà là một cái gì đó bạn có thể 249 00:11:20,700 --> 00:11:25,485 muốn làm gì với lại size-- có thể có ích. 250 00:11:25,485 --> 00:11:26,550 251 00:11:26,550 --> 00:11:29,290 >> Có bao nhiêu người đã đọc spec pset, bằng cách này? 252 00:11:29,290 --> 00:11:30,980 253 00:11:30,980 --> 00:11:32,261 OK. 254 00:11:32,261 --> 00:11:32,760 [Không nghe được] 255 00:11:32,760 --> 00:11:35,380 256 00:11:35,380 --> 00:11:36,580 >> SPEAKER 1: OK. 257 00:11:36,580 --> 00:11:37,530 Được rồi. 258 00:11:37,530 --> 00:11:41,940 Chắc chắn đọc that-- đó là một pset vui vẻ. 259 00:11:41,940 --> 00:11:51,320 Bạn có thể phục hồi bộ nhớ bị xóa card-- thực sự thú vị khi nó hoạt động. 260 00:11:51,320 --> 00:11:54,100 Nhưng chắc chắn, bắt đầu đọc đó. 261 00:11:54,100 --> 00:11:56,280 Hãy đến nói chuyện với tôi nếu bạn có câu hỏi về nó. 262 00:11:56,280 --> 00:11:59,290 >> OK, vì vậy như tôi đã nói, fread đọc một số lượng nhất định của byte. 263 00:11:59,290 --> 00:12:01,340 264 00:12:01,340 --> 00:12:03,590 Đó là một số số tùy ý rằng bạn đang đi để thiết lập. 265 00:12:03,590 --> 00:12:05,990 266 00:12:05,990 --> 00:12:08,260 Và sau đó fseek chỉ di chuyển đến một vị trí nhất định. 267 00:12:08,260 --> 00:12:11,150 Vì vậy, có thể bạn không quan tâm khoảng 10 byte tiếp theo. 268 00:12:11,150 --> 00:12:12,880 Bạn chỉ muốn bỏ qua. 269 00:12:12,880 --> 00:12:14,030 Bạn không quan tâm đến những người. 270 00:12:14,030 --> 00:12:16,280 Bạn muốn đọc bắt đầu từ byte 11. 271 00:12:16,280 --> 00:12:18,252 fseek cho phép bạn làm điều đó. 272 00:12:18,252 --> 00:12:20,710 Vì vậy, nó cho phép bạn được chọn lọc về những gì bạn đang đọc. 273 00:12:20,710 --> 00:12:25,880 Bởi vì fgetc, fgets, và fread đọc từ một nơi nào đó trong tập tin. 274 00:12:25,880 --> 00:12:27,260 275 00:12:27,260 --> 00:12:35,090 >> Một cách để nghĩ về điều này là nếu điều này là tập tin của chúng tôi, khi bạn lần đầu tiên mở nó, 276 00:12:35,090 --> 00:12:41,140 bạn có vị trí này trong tập tin bắt đầu ngay từ đầu. 277 00:12:41,140 --> 00:12:45,040 Bất cứ khi nào bạn gọi fgetc, fgetf, hoặc fread, 278 00:12:45,040 --> 00:12:48,875 nó sẽ bắt đầu từ đánh dấu vị trí này. 279 00:12:48,875 --> 00:12:51,340 280 00:12:51,340 --> 00:12:55,245 Hãy nói rằng bạn chỉ muốn đọc đoạn này bộ nhớ ở đây. 281 00:12:55,245 --> 00:12:56,300 282 00:12:56,300 --> 00:12:57,960 Bạn không thể chỉ cần gọi. 283 00:12:57,960 --> 00:13:02,430 Bạn phải tìm kiếm ở đây và sau đó đọc từ đó 284 00:13:02,430 --> 00:13:06,540 hoặc đọc, được, hoặc getc, tùy thuộc vào những gì bạn muốn. 285 00:13:06,540 --> 00:13:09,310 Vì vậy, tìm kiếm chỉ cho phép bạn bỏ qua các phần của bộ nhớ. 286 00:13:09,310 --> 00:13:11,590 Và đó là chỉ cách bạn có thể bỏ qua điều 287 00:13:11,590 --> 00:13:14,012 mà không đọc vào bộ đệm của bạn. 288 00:13:14,012 --> 00:13:15,470 Điều đó có ý nghĩa với tất cả mọi người? 289 00:13:15,470 --> 00:13:21,110 290 00:13:21,110 --> 00:13:24,780 >> Rõ ràng, có một rất nhiều here-- song song 291 00:13:24,780 --> 00:13:27,780 chuyển hướng đầu ra, hoặc đầu vào của chúng tôi, bạn đã đọc và viết. 292 00:13:27,780 --> 00:13:31,800 Vì vậy, fputc chỉ viết một nhân vật vào tập tin. 293 00:13:31,800 --> 00:13:33,655 fputs viết một dòng. 294 00:13:33,655 --> 00:13:35,030 295 00:13:35,030 --> 00:13:37,420 Fprintf in một đầu ra định dạng. 296 00:13:37,420 --> 00:13:41,190 Vì vậy, nếu bạn có các tab, hoặc không gian, hoặc không có điều gì. 297 00:13:41,190 --> 00:13:44,180 Và sau đó viết một số fwrite mảng byte vào một tập tin. 298 00:13:44,180 --> 00:13:48,860 Vì vậy, đây là cách cùng fwrite và fread là tương tự 299 00:13:48,860 --> 00:13:57,550 fgets opposites--, fputs, và sau đó rất nhiều fputc và fgetc-- 300 00:13:57,550 --> 00:14:00,710 điên, mọi thứ nhanh chóng. 301 00:14:00,710 --> 00:14:05,300 >> Chỉ cần loại giữ handy-- này bạn sẽ có thời gian khác nhau 302 00:14:05,300 --> 00:14:08,680 nơi mà có lẽ bạn chỉ muốn một ký tự tại một thời điểm. 303 00:14:08,680 --> 00:14:09,890 Có lẽ bạn muốn một dòng toàn bộ. 304 00:14:09,890 --> 00:14:14,320 Với pset-- từ điển của bạn mà là ở hai psets, 305 00:14:14,320 --> 00:14:19,690 Tôi tin rằng, chúng tôi cung cấp cho bạn một tổng thể từ điển trong một định dạng văn bản 306 00:14:19,690 --> 00:14:22,252 trong đó có tất cả các từ ngăn cách bởi một đường thẳng. 307 00:14:22,252 --> 00:14:24,210 Vì vậy, nếu bạn muốn đọc trong một từ tại một thời điểm, 308 00:14:24,210 --> 00:14:31,769 những gì bạn có thể sử dụng nếu bạn đang đọc và tất cả họ đang cách nhau trên một dòng mới 309 00:14:31,769 --> 00:14:33,310 và bạn chỉ muốn một từ vào một thời điểm? 310 00:14:33,310 --> 00:14:35,320 311 00:14:35,320 --> 00:14:36,040 >> Đung fgets 312 00:14:36,040 --> 00:14:36,748 >> SPEAKER 1: Đúng vậy. 313 00:14:36,748 --> 00:14:39,960 Fgets-- vì trả về bất cứ điều gì là trên một dòng. 314 00:14:39,960 --> 00:14:42,750 Và nếu mỗi chữ là của nó dòng riêng, chúng ta có thể sử dụng fgets. 315 00:14:42,750 --> 00:14:44,511 316 00:14:44,511 --> 00:14:45,010 Cool. 317 00:14:45,010 --> 00:14:47,290 Điều đó có ý nghĩa, tất cả mọi người? 318 00:14:47,290 --> 00:14:48,020 Mát mẻ? 319 00:14:48,020 --> 00:14:50,020 Yeah, chúng ta sẽ có được phần thú vị với con trỏ 320 00:14:50,020 --> 00:14:51,728 rất sớm, nơi bạn nhận được để làm một số toán học. 321 00:14:51,728 --> 00:14:52,776 Và nó sẽ là tuyệt vời. 322 00:14:52,776 --> 00:14:55,690 323 00:14:55,690 --> 00:14:57,740 >> Cuối step-- đóng tập tin của bạn. 324 00:14:57,740 --> 00:15:01,090 Với rất nhiều điều ở đây, một trong những mô hình của chúng tôi 325 00:15:01,090 --> 00:15:03,550 là nếu nó có thể trở lại null, kiểm tra null. 326 00:15:03,550 --> 00:15:06,160 Nếu bạn mở một cái gì đó, bạn nên đóng nó. 327 00:15:06,160 --> 00:15:10,419 OK, vì vậy bạn không được thực hiện cho đến khi bạn thực hiện trừ khi bạn đã đóng cửa. 328 00:15:10,419 --> 00:15:12,585 Giống như nó không phải trên cho đến khi người phụ nữ béo hát. 329 00:15:12,585 --> 00:15:14,130 Nó giống như việc đóng tập tin của bạn. 330 00:15:14,130 --> 00:15:16,860 331 00:15:16,860 --> 00:15:19,190 Như nó nói ở đây, chỉ cần để nhắc lại, luôn luôn 332 00:15:19,190 --> 00:15:21,750 mở tập tin của bạn trước khi bạn đọc hoặc ghi nó. 333 00:15:21,750 --> 00:15:24,450 Và luôn luôn đóng nó nếu bạn đã mở nó ra. 334 00:15:24,450 --> 00:15:25,460 Tất cả phải không? 335 00:15:25,460 --> 00:15:25,960 Cool. 336 00:15:25,960 --> 00:15:26,835 >> Vì vậy, đây là một ví dụ. 337 00:15:26,835 --> 00:15:29,250 338 00:15:29,250 --> 00:15:34,330 Vì vậy, tiny-- Tôi không biết nếu bạn guys có thể thấy rằng rất tốt. 339 00:15:34,330 --> 00:15:36,805 Nếu chúng ta chỉ có thể tăng độ sáng bằng cách nào đó. 340 00:15:36,805 --> 00:15:40,430 341 00:15:40,430 --> 00:15:45,030 Hãy để tôi thực sự làm điều này nếu tôi có thể. 342 00:15:45,030 --> 00:15:48,020 343 00:15:48,020 --> 00:15:51,470 OK, các bạn có thể không thực sự thấy rằng ở tất cả, có thể bạn? 344 00:15:51,470 --> 00:15:52,905 OK, chúng ta sẽ làm điều này, sau đó. 345 00:15:52,905 --> 00:16:35,094 346 00:16:35,094 --> 00:16:35,594 [Không nghe được] 347 00:16:35,594 --> 00:16:56,670 348 00:16:56,670 --> 00:16:58,605 >> Tôi giả định này là tốt hơn nhiều để xem. 349 00:16:58,605 --> 00:17:17,330 350 00:17:17,330 --> 00:17:19,455 Bất cứ ai có thể nhìn thấy nơi mà tôi chuột đi là câu hỏi? 351 00:17:19,455 --> 00:17:22,837 Ah, có nó is-- những gì cuộc đấu tranh! 352 00:17:22,837 --> 00:17:48,910 353 00:17:48,910 --> 00:17:49,520 >> OK. 354 00:17:49,520 --> 00:17:53,845 Về cơ bản, các bạn cần phải có loại của một ý tưởng về những gì đang thực hiện. 355 00:17:53,845 --> 00:17:56,740 356 00:17:56,740 --> 00:17:57,600 Nó không phải hoàn hảo. 357 00:17:57,600 --> 00:17:58,851 358 00:17:58,851 --> 00:18:02,425 Nhưng tôi không muốn giải thích nó hơn là chi tiêu nhiều thời gian cố gắng để định dạng nó đúng cách. 359 00:18:02,425 --> 00:18:03,610 360 00:18:03,610 --> 00:18:07,280 Về cơ bản, như bạn thấy ở đây, chúng ta bắt đầu với tập tin mở. 361 00:18:07,280 --> 00:18:09,620 Và chúng tôi có một số tập tin cơ sở dữ liệu mà chúng ta 362 00:18:09,620 --> 00:18:12,300 mở nói rằng đó là sinh viên của chúng tôi. 363 00:18:12,300 --> 00:18:14,020 Và chúng ta sẽ viết thư cho nó. 364 00:18:14,020 --> 00:18:15,060 365 00:18:15,060 --> 00:18:17,720 Vì vậy, tất nhiên, trả về null. 366 00:18:17,720 --> 00:18:19,650 Vì vậy, chúng tôi phải kiểm tra cho null. 367 00:18:19,650 --> 00:18:22,930 Và sau đó nếu nó không null, chúng tôi đi qua. 368 00:18:22,930 --> 00:18:25,660 Và như bạn thấy, chúng tôi vòng lặp thông qua đây. 369 00:18:25,660 --> 00:18:26,960 Có sinh viên. 370 00:18:26,960 --> 00:18:30,520 Học sinh là băm xác định là ba. 371 00:18:30,520 --> 00:18:34,060 Và những gì chúng tôi đang làm là chúng tôi in vào tập tin, phải không? 372 00:18:34,060 --> 00:18:36,975 Vì vậy, những gì chúng ta in ra để tập tin của chúng tôi? 373 00:18:36,975 --> 00:18:47,040 374 00:18:47,040 --> 00:18:48,906 >> Đung Điểm đó là trong mảng? 375 00:18:48,906 --> 00:18:49,680 >> SPEAKER 1: Yeah. 376 00:18:49,680 --> 00:18:50,980 Các điểm có trong các array-- chính xác. 377 00:18:50,980 --> 00:18:53,050 Vì vậy, chúng tôi đang mở này tập tin cơ sở dữ liệu, mà 378 00:18:53,050 --> 00:18:56,040 Tôi giả sử là một số loại cơ sở dữ liệu của lớp. 379 00:18:56,040 --> 00:19:01,100 Và chúng ta chỉ cần in ra điểm của mỗi học sinh đến tập tin đó. 380 00:19:01,100 --> 00:19:02,140 Mát mẻ? 381 00:19:02,140 --> 00:19:02,640 Tốt. 382 00:19:02,640 --> 00:19:03,811 383 00:19:03,811 --> 00:19:04,310 Tuyệt vời. 384 00:19:04,310 --> 00:19:05,100 OK. 385 00:19:05,100 --> 00:19:06,950 Hãy quay trở lại đối với: 386 00:19:06,950 --> 00:19:08,646 >> ĐỐI TƯỢNG: Tôi có một câu hỏi nhanh chóng. 387 00:19:08,646 --> 00:19:11,570 Là printf không trong vòng lặp for? 388 00:19:11,570 --> 00:19:12,870 Đó chỉ là trong khi vòng lặp? 389 00:19:12,870 --> 00:19:14,370 SPEAKER 1: Không, đó là trong vòng lặp for. 390 00:19:14,370 --> 00:19:16,150 391 00:19:16,150 --> 00:19:18,810 Tôi không thể nhìn thấy con chuột của tôi rất tốt ở đây. 392 00:19:18,810 --> 00:19:21,359 Vì vậy, tôi đang đấu tranh để định dạng đúng. 393 00:19:21,359 --> 00:19:22,525 Khung này nên được đi. 394 00:19:22,525 --> 00:19:23,610 395 00:19:23,610 --> 00:19:25,130 Nó sẽ được xuống đây. 396 00:19:25,130 --> 00:19:26,605 Đây là những gì trong của bạn cho vòng lặp. 397 00:19:26,605 --> 00:20:10,680 398 00:20:10,680 --> 00:20:11,180 Có. 399 00:20:11,180 --> 00:20:12,160 Bây giờ nó đẹp. 400 00:20:12,160 --> 00:20:16,720 Vì vậy, đó là cách nó nên be-- trừ cho rằng khung cuối cùng mà tôi bị sa thải. 401 00:20:16,720 --> 00:20:17,220 OK. 402 00:20:17,220 --> 00:20:19,491 Điều đó có ý nghĩa với tất cả mọi người? 403 00:20:19,491 --> 00:20:19,990 OK. 404 00:20:19,990 --> 00:20:23,750 Chúng tôi sẽ di chuyển trên để điều tiếp theo then-- 405 00:20:23,750 --> 00:20:26,180 trong đó, trên thực tế, bạn sẽ cần phải xem mã. 406 00:20:26,180 --> 00:20:28,370 Vì vậy, tôi chỉ cần đi để sao chép rằng hơn ngay bây giờ. 407 00:20:28,370 --> 00:20:31,500 408 00:20:31,500 --> 00:20:32,000 OK. 409 00:20:32,000 --> 00:20:35,110 Vì vậy, tôi sẽ cho các bạn thấy mã này. 410 00:20:35,110 --> 00:20:38,240 Và tôi muốn bạn để thử và con số ra những gì nó phải làm. 411 00:20:38,240 --> 00:20:49,740 412 00:20:49,740 --> 00:20:52,480 >> Vì vậy, cho that-- mất một phút hoặc lâu hơn. 413 00:20:52,480 --> 00:20:54,440 Hãy thử và tìm ra những gì đang xảy ra ở đây. 414 00:20:54,440 --> 00:21:58,840 415 00:21:58,840 --> 00:21:59,570 >> Bất cứ ý tưởng? 416 00:21:59,570 --> 00:22:08,180 417 00:22:08,180 --> 00:22:12,470 >> Chúng tôi biết rằng chúng tôi có ít nhất hai đối số trong dòng lệnh, phải không? 418 00:22:12,470 --> 00:22:16,270 Tôi giả sử một trong số đó là có được rằng [không nghe được] của chương trình của chúng tôi là 419 00:22:16,270 --> 00:22:17,530 và sau đó một cái gì đó khác. 420 00:22:17,530 --> 00:22:19,980 Bởi vì nếu [không nghe được] là ít hơn hai, chúng tôi hét lên với họ. 421 00:22:19,980 --> 00:22:21,140 Phải không? 422 00:22:21,140 --> 00:22:25,300 Và từ việc sử dụng, nó trông giống như nó sẽ có một số loại tập tin. 423 00:22:25,300 --> 00:22:26,260 Chúng ta đều đồng ý với điều đó? 424 00:22:26,260 --> 00:22:29,110 425 00:22:29,110 --> 00:22:31,570 Vì vậy, bây giờ, vòng lặp làm là gì? 426 00:22:31,570 --> 00:22:32,570 Nó là những gì đi qua? 427 00:22:32,570 --> 00:22:35,000 428 00:22:35,000 --> 00:22:36,449 >> ĐỐI TƯỢNG: Tất cả các tập tin. 429 00:22:36,449 --> 00:22:37,240 SPEAKER 1: Chính xác. 430 00:22:37,240 --> 00:22:39,650 Nó đi qua tất cả các các tập tin mà chúng tôi đã có đầu vào. 431 00:22:39,650 --> 00:22:40,720 432 00:22:40,720 --> 00:22:46,040 Vì vậy, cho mỗi tập tin, nó mở ra một số chuỗi đó. 433 00:22:46,040 --> 00:22:47,560 Nó mở tập tin đó. 434 00:22:47,560 --> 00:22:48,060 Phải không? 435 00:22:48,060 --> 00:22:49,140 436 00:22:49,140 --> 00:22:52,380 Và nó đọc từ nó. 437 00:22:52,380 --> 00:22:53,420 438 00:22:53,420 --> 00:22:55,540 Tất nhiên, kiểm tra nếu nó là null. 439 00:22:55,540 --> 00:22:57,220 Và sau đó nó in. 440 00:22:57,220 --> 00:23:01,460 Nếu đó là null, nó chỉ cho chúng tôi rằng đó không phải là một tập tin tồn tại. 441 00:23:01,460 --> 00:23:04,290 Bởi vì nhớ, với đọc tập tin của chúng tôi có tồn tại. 442 00:23:04,290 --> 00:23:04,810 Phải không? 443 00:23:04,810 --> 00:23:06,870 Với viết và append, bạn có thể nhận được ngay với nó. 444 00:23:06,870 --> 00:23:08,970 Nhưng với đọc, tập tin của chúng tôi có tồn tại. 445 00:23:08,970 --> 00:23:10,430 446 00:23:10,430 --> 00:23:13,330 >> Và sau đó nếu nó không tồn tại, được những gì chúng ta làm gì ở đây? 447 00:23:13,330 --> 00:23:14,810 448 00:23:14,810 --> 00:23:15,780 Hãy bắt đầu ngay ở đây. 449 00:23:15,780 --> 00:23:18,815 Gì đây do-- ký tự đầu tiên này. 450 00:23:18,815 --> 00:23:20,960 451 00:23:20,960 --> 00:23:21,790 Nó làm gì? 452 00:23:21,790 --> 00:23:24,100 Ông được một nhân vật, phải không? 453 00:23:24,100 --> 00:23:25,400 Vì vậy, những gì là điều này đang làm gì? 454 00:23:25,400 --> 00:23:26,775 Nó nhận được ký tự đầu tiên. 455 00:23:26,775 --> 00:23:28,860 456 00:23:28,860 --> 00:23:30,200 Bất cứ ai cũng biết kết thúc tập tin? 457 00:23:30,200 --> 00:23:31,170 >> Đung End của tập tin? 458 00:23:31,170 --> 00:23:32,680 >> SPEAKER 1: Kết thúc file-- chính xác. 459 00:23:32,680 --> 00:23:35,310 Vì vậy, nó sẽ đi qua toàn bộ tập tin, phải không? 460 00:23:35,310 --> 00:23:36,710 461 00:23:36,710 --> 00:23:40,780 Và sau đó nó sẽ cập nhật thông tin nhận được tất cả các nhân vật tiếp theo. 462 00:23:40,780 --> 00:23:41,565 Phải không? 463 00:23:41,565 --> 00:23:43,636 Và những gì nó đang làm gì? 464 00:23:43,636 --> 00:23:44,760 Đung Đưa rằng in-- 465 00:23:44,760 --> 00:23:46,741 466 00:23:46,741 --> 00:23:49,170 >> SPEAKER 1: putchar in để bảo vệ màn hình của bạn. 467 00:23:49,170 --> 00:23:50,867 468 00:23:50,867 --> 00:23:51,950 [Không nghe được] nhân vật. 469 00:23:51,950 --> 00:23:54,300 Và sau đó khi nó [không nghe được] điều này sẽ đóng file. 470 00:23:54,300 --> 00:23:57,370 >> ĐỐI TƯỢNG: Bạn không cần một [? khác? ?] 471 00:23:57,370 --> 00:23:59,005 >> SPEAKER 1: Không nhất thiết. 472 00:23:59,005 --> 00:24:01,480 Ý tôi là, nó loại ngụ ý trong này. 473 00:24:01,480 --> 00:24:06,780 Bởi vì điều này trở lại, mặc dù, như dài như điều này không bắt được điều này, bạn đang sử dụng tốt. 474 00:24:06,780 --> 00:24:07,940 475 00:24:07,940 --> 00:24:10,250 Tôi có nghĩa là nó có thể là tốt thực hành để làm một khác. 476 00:24:10,250 --> 00:24:15,755 Nhưng một người khác không phải là luôn luôn đặc biệt cần thiết 477 00:24:15,755 --> 00:24:17,610 nếu bạn có một cái gì đó giống như một sự trở lại, mà 478 00:24:17,610 --> 00:24:20,640 có nghĩa là trong trường hợp này nếu nó bắt nó, chương trình của bạn sẽ kết thúc 479 00:24:20,640 --> 00:24:21,850 và nó sẽ không bao giờ có được điều này. 480 00:24:21,850 --> 00:24:23,030 481 00:24:23,030 --> 00:24:29,190 Nó nhiều hơn cho các trường hợp bạn không nhất thiết phải trở về một cái gì đó. 482 00:24:29,190 --> 00:24:31,370 Bởi vì nếu điều này là không trở về bất cứ điều gì, 483 00:24:31,370 --> 00:24:34,430 nó sẽ có nghĩa là nếu điều này là sự thật, phần còn lại của điều này vẫn sẽ chạy. 484 00:24:34,430 --> 00:24:36,138 Và trong trường hợp đó, bạn sẽ muốn có một sai lầm. 485 00:24:36,138 --> 00:24:38,240 Nếu nó trở về, và kết thúc chương trình của bạn, 486 00:24:38,240 --> 00:24:41,960 một khác là không cần thiết tất cả thời gian, tùy thuộc vào bối cảnh. 487 00:24:41,960 --> 00:24:43,084 488 00:24:43,084 --> 00:24:44,375 Jacob, bạn đã có một câu hỏi? 489 00:24:44,375 --> 00:24:46,100 Đung Yeah. 490 00:24:46,100 --> 00:24:49,300 Vì vậy, không fgetc được những nhân vật tiếp theo? 491 00:24:49,300 --> 00:24:50,734 Làm thế nào để nhân vật tăng? 492 00:24:50,734 --> 00:24:51,400 SPEAKER 1: Yeah. 493 00:24:51,400 --> 00:24:52,774 Vì vậy, fgetc được các ký tự tiếp theo. 494 00:24:52,774 --> 00:24:54,140 495 00:24:54,140 --> 00:24:56,866 Bạn có thể nghĩ về nó như C ++ trong một cảm giác. 496 00:24:56,866 --> 00:24:58,350 >> Đung Vì vậy, những gì đã được kết thúc tập tin? 497 00:24:58,350 --> 00:25:00,877 >> SPEAKER 1: EOF là kết thúc của tập tin. 498 00:25:00,877 --> 00:25:03,960 Nó chỉ là một dấu hiệu cho phép bạn biết mà bạn đang ở cuối của tập tin của bạn. 499 00:25:03,960 --> 00:25:06,742 Vì vậy, điều này sẽ in tiêu chuẩn của bạn ra. 500 00:25:06,742 --> 00:25:08,950 Và sau đó nó sẽ đóng cửa các tập tin khi nó được thực hiện. 501 00:25:08,950 --> 00:25:10,700 Và sau đó chúng ta hãy đi đến các tập tiếp theo, phải không? 502 00:25:10,700 --> 00:25:12,660 Vì vậy, tổng thể, những gì hiện chương trình này làm gì? 503 00:25:12,660 --> 00:25:15,402 504 00:25:15,402 --> 00:25:16,090 >> [Không nghe được] 505 00:25:16,090 --> 00:25:16,900 >> SPEAKER 1: Yeah. 506 00:25:16,900 --> 00:25:18,770 Nó chỉ in ra tất cả mọi thứ ở đó. 507 00:25:18,770 --> 00:25:23,270 Vì vậy, nếu các bạn đã từng sử dụng CAT và sau đó là tên của một số file-- 508 00:25:23,270 --> 00:25:26,240 Tôi không biết nếu có của bạn có bao giờ làm điều đó trên thiết bị đầu cuối của bạn. 509 00:25:26,240 --> 00:25:29,630 Nhưng nếu bạn đã bao giờ sử dụng lệnh CAT-- C-A-T-- 510 00:25:29,630 --> 00:25:31,880 và sau đó bất kỳ tập tin bạn có there-- nó 511 00:25:31,880 --> 00:25:37,260 in nó ra để thiết bị đầu cuối của bạn, có thể được siêu tiện dụng cho một số điều. 512 00:25:37,260 --> 00:25:38,746 Tôi sử dụng nó rất nhiều. 513 00:25:38,746 --> 00:25:40,120 Điều đó có ý nghĩa với tất cả mọi người? 514 00:25:40,120 --> 00:25:41,480 515 00:25:41,480 --> 00:25:42,100 Mát mẻ? 516 00:25:42,100 --> 00:25:46,530 >> OK vì vậy công việc của bạn now-- hoặc bằng một mình hoặc với những người xung quanh you-- 517 00:25:46,530 --> 00:25:54,930 là chỉ cần viết một chương trình đơn giản mà sẽ chỉ viết "Hello, world!" 518 00:25:54,930 --> 00:25:56,255 ra một tập tin. 519 00:25:56,255 --> 00:26:00,215 >> [Không nghe được] 520 00:26:00,215 --> 00:26:56,210 521 00:26:56,210 --> 00:26:57,040 >> [Không nghe được] 522 00:26:57,040 --> 00:26:59,248 >> SPEAKER 1: Tôi là như thế nào, đã làm Tôi làm điều đó tuần tồi tệ nhất? 523 00:26:59,248 --> 00:27:00,201 524 00:27:00,201 --> 00:27:01,492 Tôi không nghĩ rằng đó là xấu. 525 00:27:01,492 --> 00:27:02,479 526 00:27:02,479 --> 00:27:03,520 Tôi rất vui vì bạn tất cả ở đây. 527 00:27:03,520 --> 00:27:04,655 Nó thực sự làm cho tôi hạnh phúc. 528 00:27:04,655 --> 00:27:07,565 529 00:27:07,565 --> 00:27:10,160 Tôi là một cô gái thú vui đơn giản. 530 00:27:10,160 --> 00:27:11,688 Tôi chỉ muốn khi phần của tôi theo học. 531 00:27:11,688 --> 00:27:13,830 532 00:27:13,830 --> 00:27:18,270 Vì vậy, tôi chỉ nhận được này bắt đầu cho các bạn để chúng ta có thể mã với nhau. 533 00:27:18,270 --> 00:27:22,290 Tôi không muốn đặt bất cứ ai trên tại chỗ, trừ khi bạn muốn trở thành. 534 00:27:22,290 --> 00:27:26,486 535 00:27:26,486 --> 00:27:30,086 >> ĐỐI TƯỢNG: Đối với các bài kiểm tra, làm chúng ta phải viết một chương trình? 536 00:27:30,086 --> 00:27:33,260 >> SPEAKER 1: Bạn có thể được yêu cầu viết chương trình đơn giản bằng tay. 537 00:27:33,260 --> 00:27:35,940 538 00:27:35,940 --> 00:27:36,590 Yup. 539 00:27:36,590 --> 00:27:38,510 >> ĐỐI TƯỢNG: Các bài kiểm tra là vào tuần tới, phải không? 540 00:27:38,510 --> 00:27:40,108 >> SPEAKER 1: Các bài kiểm tra là thứ tư tới. 541 00:27:40,108 --> 00:27:40,855 542 00:27:40,855 --> 00:27:43,730 Điều đó có nghĩa là một [đáng yêu? CSE?] bên chấm điểm sau đó, mà 543 00:27:43,730 --> 00:27:50,390 có nghĩa là bạn sẽ nhận được điểm số của bạn lại rằng night-- vào thời gian nào? 544 00:27:50,390 --> 00:27:50,890 Ai biết được? 545 00:27:50,890 --> 00:27:51,973 Nhưng nó sẽ là đêm đó. 546 00:27:51,973 --> 00:28:02,020 547 00:28:02,020 --> 00:28:02,855 >> Được rồi. 548 00:28:02,855 --> 00:28:04,250 Làm thế nào để chúng tôi muốn bắt đầu này? 549 00:28:04,250 --> 00:28:07,964 550 00:28:07,964 --> 00:28:09,630 Tôi sẽ cung cấp cho bạn một bắt đầu hint-- với điều này. 551 00:28:09,630 --> 00:28:11,455 >> Đung Bạn phải mở một tập tin. 552 00:28:11,455 --> 00:28:12,250 >> SPEAKER 1: Yeah. 553 00:28:12,250 --> 00:28:14,060 Vì vậy, những gì bạn muốn gọi này? 554 00:28:14,060 --> 00:28:16,150 Bạn chỉ muốn gọi nó là "file"? 555 00:28:16,150 --> 00:28:17,480 Chúng ta hãy làm cho nó dễ dàng. 556 00:28:17,480 --> 00:28:26,752 Vì vậy, những gì chúng tôi fopen-- kiểm tra đầu ra sẽ là? 557 00:28:26,752 --> 00:28:36,130 Gọi nó là "Xin chào." 558 00:28:36,130 --> 00:28:37,810 Và chế độ của chúng ta là gì? 559 00:28:37,810 --> 00:28:39,764 560 00:28:39,764 --> 00:28:41,055 Chúng tôi đang làm gì đến tập tin này? 561 00:28:41,055 --> 00:28:42,676 562 00:28:42,676 --> 00:28:43,500 >> Đung đọc. 563 00:28:43,500 --> 00:28:44,401 564 00:28:44,401 --> 00:28:44,900 Viết. 565 00:28:44,900 --> 00:28:46,191 SPEAKER 1: Chúng tôi đang viết cho nó. 566 00:28:46,191 --> 00:28:47,360 567 00:28:47,360 --> 00:28:47,860 Đáng yêu. 568 00:28:47,860 --> 00:28:50,330 569 00:28:50,330 --> 00:28:52,860 OK, vì vậy chúng tôi có tập tin này ngay bây giờ. 570 00:28:52,860 --> 00:28:54,920 571 00:28:54,920 --> 00:28:56,212 Những gì chúng tôi cần phải làm gì? 572 00:28:56,212 --> 00:28:57,420 Đung Kiểm tra nếu nó là null. 573 00:28:57,420 --> 00:28:59,820 SPEAKER 1: Kiểm tra nếu nó null-- chính xác. 574 00:28:59,820 --> 00:29:01,980 Đó là những gì tôi muốn nghe. 575 00:29:01,980 --> 00:29:05,930 Điều đó sẽ được tự động, đặc biệt là khá nhiều từ thời điểm này. 576 00:29:05,930 --> 00:29:07,530 577 00:29:07,530 --> 00:29:10,950 Nếu bạn bắt đầu segfaulting, bạn có thể không kiểm tra cho null ở đâu đó. 578 00:29:10,950 --> 00:29:12,480 Chín trong số mười lần, đó là sẽ là lỗi của bạn. 579 00:29:12,480 --> 00:29:15,400 Vì vậy, nếu bạn chỉ có thể nhận được trong thói quen, luôn luôn kiểm tra xem nó là null, 580 00:29:15,400 --> 00:29:18,150 cuộc sống của bạn sẽ là tốt đẹp và easy-- hoặc dễ dàng hơn. 581 00:29:18,150 --> 00:29:19,480 >> Vì vậy, hãy kiểm tra để xem nếu nó là null. 582 00:29:19,480 --> 00:29:21,200 583 00:29:21,200 --> 00:29:24,820 Vì vậy, nếu nó không phải là null, là những gì các bang bằng 584 00:29:24,820 --> 00:29:26,784 means-- không null-- đó là hợp lệ. 585 00:29:26,784 --> 00:29:27,700 Những gì chúng tôi muốn làm gì? 586 00:29:27,700 --> 00:29:29,750 587 00:29:29,750 --> 00:29:31,570 Chúng tôi chỉ muốn in đến tập tin đó, phải không? 588 00:29:31,570 --> 00:29:32,923 Vì vậy, những gì chúng ta sẽ sử dụng không? 589 00:29:32,923 --> 00:29:34,092 >> Đung fprintf 590 00:29:34,092 --> 00:29:36,800 >> SPEAKER 1: Fprintf-- đáng yêu. 591 00:29:36,800 --> 00:29:38,150 592 00:29:38,150 --> 00:29:44,000 Và fprintf mất hai arguments-- nơi nó đi và những gì chúng tôi muốn in. 593 00:29:44,000 --> 00:29:45,820 Vì vậy, một trong những đầu tiên là gì? 594 00:29:45,820 --> 00:29:46,570 Là nó sẽ đi đâu? 595 00:29:46,570 --> 00:29:47,490 >> Đung File. 596 00:29:47,490 --> 00:29:48,785 >> SPEAKER 1: Nó sẽ nộp. 597 00:29:48,785 --> 00:29:49,784 598 00:29:49,784 --> 00:29:50,950 Và những gì chúng ta muốn in? 599 00:29:50,950 --> 00:29:52,900 600 00:29:52,900 --> 00:29:58,065 "Hello, world!" 601 00:29:58,065 --> 00:29:58,565 Được rồi. 602 00:29:58,565 --> 00:30:03,670 Chúng tôi có một thing-- cuối cùng một mô hình lớn ở đây. 603 00:30:03,670 --> 00:30:04,479 604 00:30:04,479 --> 00:30:05,145 Đung Close. 605 00:30:05,145 --> 00:30:05,853 SPEAKER 1: Close. 606 00:30:05,853 --> 00:30:09,990 607 00:30:09,990 --> 00:30:10,540 Có bạn đi. 608 00:30:10,540 --> 00:30:13,384 >> Đung là điều này xảy ra nếu tập tin là null? 609 00:30:13,384 --> 00:30:15,050 SPEAKER 1: Không, đây là nếu nó không phải là null. 610 00:30:15,050 --> 00:30:16,881 ĐỐI TƯỢNG: Oh, nếu nó not-- OK. 611 00:30:16,881 --> 00:30:21,728 612 00:30:21,728 --> 00:30:25,410 Đối với fopen và sau đó hai đối số đó đi vào bên trong, 613 00:30:25,410 --> 00:30:27,655 những gì đối số đầu tiên có nghĩa là một lần nữa? 614 00:30:27,655 --> 00:30:30,392 >> SPEAKER 1: Các đối số là giống như tên của tập tin 615 00:30:30,392 --> 00:30:31,350 mà bạn muốn đến. 616 00:30:31,350 --> 00:30:36,020 Vì vậy, sau này chạy, bạn sẽ có một số tập tin gọi là "hello" 617 00:30:36,020 --> 00:30:38,320 mà đã có "Hello, world" bên trong nó. 618 00:30:38,320 --> 00:30:38,820 Đó là tất cả. 619 00:30:38,820 --> 00:30:39,500 Chỉ cần tên. 620 00:30:39,500 --> 00:30:42,685 621 00:30:42,685 --> 00:30:48,650 >> Đung Và kể từ khi nó viết, các tập tin không phải đã tồn tại. 622 00:30:48,650 --> 00:30:49,675 Có phải đó là những gì bạn nói? 623 00:30:49,675 --> 00:30:50,410 >> SPEAKER 1: Đúng vậy. 624 00:30:50,410 --> 00:30:50,910 Chính xác. 625 00:30:50,910 --> 00:30:53,110 626 00:30:53,110 --> 00:30:55,839 Nếu "Hello" như một tập tin chưa tồn tại, đó là 627 00:30:55,839 --> 00:30:58,380 sẽ tạo ra một tập tin gọi Hello "và viết thư cho nó cho bạn. 628 00:30:58,380 --> 00:30:59,631 629 00:30:59,631 --> 00:31:03,610 >> ĐỐI TƯỢNG: Khi bạn đang nói chương trình viết cho các tập tin, 630 00:31:03,610 --> 00:31:08,075 tại sao bạn viết "file" thay vì tên của tập tin và fprintf-- 631 00:31:08,075 --> 00:31:13,600 >> SPEAKER 1: Bởi vì trong trường hợp này, chúng tôi có rằng FILE-- lớn trong tất cả các ngôi sao caps--, 632 00:31:13,600 --> 00:31:14,260 nộp. 633 00:31:14,260 --> 00:31:17,370 Vì vậy, nó là một con trỏ đến tập tin rằng bạn đang nói về. 634 00:31:17,370 --> 00:31:19,930 Đây là cách mà chúng tôi chỉ đề cập đến nó. 635 00:31:19,930 --> 00:31:24,850 Vì vậy, trong trường hợp này, bạn có thể nghĩ aha file--, 636 00:31:24,850 --> 00:31:31,271 chúng ta có thể sử dụng this-- tập tin ở đây đề cập đến việc mở "Hello" 637 00:31:31,271 --> 00:31:32,145 và để cho nó viết. 638 00:31:32,145 --> 00:31:34,728 >> Đung chúng ta có thể đặt một "Hello" thay vì [? chỉ?] f tập tin? 639 00:31:34,728 --> 00:31:40,160 SPEAKER 1: Không, bởi vì "Hello" cần phải được mở và ghi. 640 00:31:40,160 --> 00:31:41,820 641 00:31:41,820 --> 00:31:45,980 Nộp ở đây giống như một vấn thiết kế nói rằng OK, chúng tôi 642 00:31:45,980 --> 00:31:49,190 có hello-- file-- này mà chúng ta đang tìm kiếm. 643 00:31:49,190 --> 00:31:50,680 Nó đã được mở ra. 644 00:31:50,680 --> 00:31:52,140 Và chúng ta sẽ viết thư cho nó. 645 00:31:52,140 --> 00:31:55,130 Nếu bạn chỉ cần sử dụng "Hello", được đóng gói trong nó. 646 00:31:55,130 --> 00:31:56,846 Vì vậy, nó sẽ freak ra. 647 00:31:56,846 --> 00:31:58,590 648 00:31:58,590 --> 00:32:00,300 Tôi có nghĩa là, bạn có thể đặt tên cho nó. 649 00:32:00,300 --> 00:32:03,960 Bạn có thể làm tập tin, sao, "Hello", bằng đó. 650 00:32:03,960 --> 00:32:07,840 Tuy nhiên, toàn bộ các điểm là bạn cần một ngôi sao tập tin con trỏ để 651 00:32:07,840 --> 00:32:09,281 để có thể sử dụng các chức năng này. 652 00:32:09,281 --> 00:32:11,280 Đung Bạn có thể làm tập tin, sao, tập tin, "Hello" 653 00:32:11,280 --> 00:32:13,113 hoặc làm bạn phải đặt tập tin sao, tập tin của nó? 654 00:32:13,113 --> 00:32:16,330 SPEAKER 1: Bạn có thể làm tập tin, sao, "Xin chào." 655 00:32:16,330 --> 00:32:19,790 Bạn có thể thay đổi điều này để bất cứ tên nào bạn muốn. 656 00:32:19,790 --> 00:32:22,114 Đó là hoàn toàn tùy ý tên gì đó là. 657 00:32:22,114 --> 00:32:23,179 658 00:32:23,179 --> 00:32:24,220 Bạn có thể đặt tên cho nó bất cứ điều gì. 659 00:32:24,220 --> 00:32:25,501 660 00:32:25,501 --> 00:32:28,020 Đặt tên cho nó bay spaghetti, nếu bạn muốn. 661 00:32:28,020 --> 00:32:29,690 >> Đung là gì "w" trong dấu ngoặc kép cho? 662 00:32:29,690 --> 00:32:31,540 >> SPEAKER 1: "w" là chỉ chế độ. 663 00:32:31,540 --> 00:32:33,170 Vì vậy, chúng tôi đang viết đến tập tin này. 664 00:32:33,170 --> 00:32:34,410 665 00:32:34,410 --> 00:32:35,320 Tất cả mọi người tốt? 666 00:32:35,320 --> 00:32:36,227 Rõ ràng? 667 00:32:36,227 --> 00:32:36,981 Vâng. 668 00:32:36,981 --> 00:32:40,365 >> Đung Vì vậy, khi nó viết này tập tin, nơi nào chúng ta sau đó tìm tập tin đó? 669 00:32:40,365 --> 00:32:43,820 >> SPEAKER 1: Nó sẽ được trong cùng một thư mục mà bạn đang ở. 670 00:32:43,820 --> 00:32:45,650 671 00:32:45,650 --> 00:32:48,880 Nếu bạn đang ở trong pset ba và bạn chạy này, trong pset của bạn 672 00:32:48,880 --> 00:32:52,600 ba thư mục là có được tập tin này được gọi là "Xin chào." 673 00:32:52,600 --> 00:32:53,160 Mát mẻ? 674 00:32:53,160 --> 00:32:53,757 Tất cả mọi người tốt? 675 00:32:53,757 --> 00:32:55,840 Tôi cảm thấy như bạn đang tất cả nhận được nó, đó là rất tốt. 676 00:32:55,840 --> 00:32:57,290 677 00:32:57,290 --> 00:32:57,790 OK. 678 00:32:57,790 --> 00:33:05,960 Vì vậy, trở lại show-- trượt của tôi Tôi yêu khi mọi thứ làm việc. 679 00:33:05,960 --> 00:33:08,674 OK, pointers-- Các bạn vui mừng? 680 00:33:08,674 --> 00:33:09,465 Con trỏ là rất lớn. 681 00:33:09,465 --> 00:33:11,581 682 00:33:11,581 --> 00:33:13,580 Họ mất một chút để quấn quanh đầu của bạn. 683 00:33:13,580 --> 00:33:15,288 Đây là năm thứ hai của tôi dạy con trỏ. 684 00:33:15,288 --> 00:33:16,850 Và tôi nghĩ rằng cuối cùng tôi đã nhận nó. 685 00:33:16,850 --> 00:33:18,650 Vì vậy, nếu bạn gặp khó khăn, đó là OK. 686 00:33:18,650 --> 00:33:19,940 687 00:33:19,940 --> 00:33:24,070 Như tôi đã nói trước, vẽ tranh sẽ giúp rất nhiều với những thứ trong CS, 688 00:33:24,070 --> 00:33:27,400 nhiều như tôi nghĩ rằng mọi người có xu hướng suy nghĩ oh, chúng tôi đang ở một máy tính. 689 00:33:27,400 --> 00:33:28,399 Chúng tôi chỉ nên mã. 690 00:33:28,399 --> 00:33:30,190 Hình ảnh vẽ No-- thực sự sẽ giúp bạn. 691 00:33:30,190 --> 00:33:32,773 Và tôi thực sự khuyến khích bạn gõ vào mặt học sinh mẫu giáo của bạn 692 00:33:32,773 --> 00:33:35,010 và đưa ra bút chì màu hoặc đánh dấu và rút ra. 693 00:33:35,010 --> 00:33:36,110 Bởi vì nó sẽ giúp bạn. 694 00:33:36,110 --> 00:33:39,380 Và nếu bạn nhìn thấy tôi ở giờ làm việc, tôi sẽ được thực hiện xung quanh những đống giấy 695 00:33:39,380 --> 00:33:41,580 với bút vẽ những điều trên. 696 00:33:41,580 --> 00:33:44,370 >> Vì vậy, đặc biệt là với pointers-- vẽ hình ảnh. 697 00:33:44,370 --> 00:33:47,970 Và tôi chắc chắn rằng chúng tôi đang thực sự đi vào được vẽ một số hình ảnh ở đây quá. 698 00:33:47,970 --> 00:33:51,270 >> Vì vậy, các bạn tất cả đã nhìn thấy Binky, điều claymation mát mẻ này. 699 00:33:51,270 --> 00:33:54,720 Và chúng tôi nghĩ rằng nó thực sự buồn cười khi ông phát nổ vào một loạt các miếng. 700 00:33:54,720 --> 00:33:56,280 701 00:33:56,280 --> 00:33:57,755 Đó là một số cứu trợ truyện tranh cho các lớp học. 702 00:33:57,755 --> 00:34:02,140 703 00:34:02,140 --> 00:34:05,900 C [không nghe được] khả năng tuyệt vời này để có thể kiểm soát bộ nhớ. 704 00:34:05,900 --> 00:34:10,090 Và đó là một trong những điều mà thực sự làm cho nó một ngôn ngữ mạnh mẽ như vậy. 705 00:34:10,090 --> 00:34:13,469 Nhưng với sức mạnh lớn đến trách nhiệm lớn. 706 00:34:13,469 --> 00:34:16,230 Và những điều điên rồ có thể xảy ra nếu bạn không cẩn thận. 707 00:34:16,230 --> 00:34:18,560 Vì vậy, khi bạn đang sử dụng con trỏ, bạn muốn chắc 708 00:34:18,560 --> 00:34:21,440 chắc chắn rằng bạn thực sự hiểu chính xác những gì bạn đang làm. 709 00:34:21,440 --> 00:34:25,530 Hy vọng rằng chút tiếp theo thời gian sẽ giúp bạn thực sự hiểu 710 00:34:25,530 --> 00:34:27,850 con trỏ, làm thế nào để sử dụng chúng, và làm thế nào để vận dụng chúng. 711 00:34:27,850 --> 00:34:29,170 712 00:34:29,170 --> 00:34:33,460 >> Vì vậy, memory-- tôi chắc chắn rằng chúng tôi đã nhìn thấy sơ đồ này trước đây. 713 00:34:33,460 --> 00:34:38,540 Vì vậy, đây chỉ là một sơ đồ đơn giản của thế nào những điều có thể được lưu trữ bộ nhớ. 714 00:34:38,540 --> 00:34:43,145 Vì vậy, về cơ bản bạn có những mảng lớn của khối một byte 715 00:34:43,145 --> 00:34:46,000 là những gì chúng tôi có here-- nhẹ gia tăng bởi một mỗi lần. 716 00:34:46,000 --> 00:34:51,810 Đây là trong hex [không nghe được] vì vậy khối tám-bit. 717 00:34:51,810 --> 00:34:55,510 Và mỗi khối có liên quan với một số địa chỉ hệ thập lục phân. 718 00:34:55,510 --> 00:34:58,750 Vì vậy, nếu bạn đã bao giờ thấy 0x, đó chỉ là notating 719 00:34:58,750 --> 00:35:00,670 rằng đó là một địa chỉ hệ thập lục phân. 720 00:35:00,670 --> 00:35:03,970 Bạn có thể giả định này có nghĩa là một số địa chỉ trong bộ nhớ. 721 00:35:03,970 --> 00:35:06,935 Chúng ta đang nói về các địa chỉ bộ nhớ bất cứ khi nào bạn nhìn thấy hệ thập lục phân. 722 00:35:06,935 --> 00:35:10,420 723 00:35:10,420 --> 00:35:14,630 >> Chúng tôi có ints là các biến, phao nổi là các biến lưu trữ. 724 00:35:14,630 --> 00:35:16,260 Vì vậy, ints cửa hàng ints. 725 00:35:16,260 --> 00:35:17,430 Floats cửa hàng nổi. 726 00:35:17,430 --> 00:35:20,260 Vì vậy, chúng tôi cũng có con trỏ mà địa chỉ bộ nhớ lưu trữ. 727 00:35:20,260 --> 00:35:21,660 Đó là một loại bản đồ. 728 00:35:21,660 --> 00:35:24,240 Con trỏ là độc quyền cho các địa chỉ bộ nhớ. 729 00:35:24,240 --> 00:35:25,780 730 00:35:25,780 --> 00:35:27,292 Vì vậy, đó là giống như kiểu của bạn ở đó. 731 00:35:27,292 --> 00:35:29,550 732 00:35:29,550 --> 00:35:34,470 Thiết bị của bạn là 32-bit, có nghĩa là địa chỉ bộ nhớ của bạn là bốn byte. 733 00:35:34,470 --> 00:35:37,830 Vì vậy, bất kỳ con trỏ mà bạn có cũng là có được bốn byte. 734 00:35:37,830 --> 00:35:43,200 Hoặc người nào khác nếu nó là bốn byte, bộ nhớ là bốn byte. 735 00:35:43,200 --> 00:35:44,790 Con trỏ bộ nhớ lưu trữ. 736 00:35:44,790 --> 00:35:46,430 Vì vậy, chúng bốn byte. 737 00:35:46,430 --> 00:35:48,460 Cool-- chỉ muốn củng cố thêm rằng. 738 00:35:48,460 --> 00:35:50,120 739 00:35:50,120 --> 00:35:52,220 >> Bạn sẽ nhận được truyện tranh này ngay bây giờ. 740 00:35:52,220 --> 00:35:55,040 Tôi không biết có bao nhiêu bạn là người hâm mộ xkcd, nhưng tôi yêu xkcd. 741 00:35:55,040 --> 00:35:55,780 Thật tuyệt vời. 742 00:35:55,780 --> 00:35:57,290 743 00:35:57,290 --> 00:35:57,790 >> Được rồi. 744 00:35:57,790 --> 00:36:01,640 Vì vậy, việc tạo ra pointers-- như tôi đã nói, đó là khá nhiều giống như bất cứ điều gì khác. 745 00:36:01,640 --> 00:36:02,930 Bạn có một loại. 746 00:36:02,930 --> 00:36:04,050 Bạn có một tên. 747 00:36:04,050 --> 00:36:04,810 Phải không? 748 00:36:04,810 --> 00:36:10,410 Đó là những gì chúng tôi có ở đó. [? Hex?] Sao có nghĩa là nó là một con trỏ, 749 00:36:10,410 --> 00:36:12,250 và sau đó bất cứ điều gì bạn muốn gọi nó. 750 00:36:12,250 --> 00:36:15,770 Vì vậy, các loại đại diện những gì bạn có thể lưu trữ. 751 00:36:15,770 --> 00:36:16,850 752 00:36:16,850 --> 00:36:17,990 Tất cả phải không? 753 00:36:17,990 --> 00:36:24,350 Trong cùng một cách mà nếu chúng ta làm ints, chúng tôi biết chúng tôi đang lưu trữ một int đó. 754 00:36:24,350 --> 00:36:25,990 755 00:36:25,990 --> 00:36:30,280 Với một con trỏ, nó giữ một địa chỉ bộ nhớ. 756 00:36:30,280 --> 00:36:34,240 Nhưng những gì nó có nghĩa là that-- đây là nơi một bản vẽ sẽ có ích. 757 00:36:34,240 --> 00:36:36,170 758 00:36:36,170 --> 00:36:45,980 Vì vậy, trong trường hợp này, chúng tôi có một số value-- hãy nói bốn. 759 00:36:45,980 --> 00:36:49,306 Bốn là tại một địa chỉ. 760 00:36:49,306 --> 00:36:49,805 OK? 761 00:36:49,805 --> 00:36:51,550 762 00:36:51,550 --> 00:36:56,170 >> Đầu tiên này ở đây có nghĩa rằng đó là một con trỏ 2x. 763 00:36:56,170 --> 00:36:56,740 Phải không? 764 00:36:56,740 --> 00:36:57,628 Đó là một số con trỏ x. 765 00:36:57,628 --> 00:36:58,852 766 00:36:58,852 --> 00:37:00,940 x có thể là một cái gì đó, bất cứ điều gì. 767 00:37:00,940 --> 00:37:01,960 768 00:37:01,960 --> 00:37:05,130 Dù x is-- nói x là bốn. 769 00:37:05,130 --> 00:37:07,280 Nó sẽ lưu trữ địa chỉ bộ nhớ ở đây. 770 00:37:07,280 --> 00:37:12,260 Vì vậy, int, ngôi sao, x-- này là một số khe khác trong memory-- 771 00:37:12,260 --> 00:37:13,590 ai biết đây là những gì. 772 00:37:13,590 --> 00:37:15,430 Nhưng nó sẽ lưu giữ một địa chỉ ở đây. 773 00:37:15,430 --> 00:37:27,040 Vì vậy, đây sẽ là like-- trong trường hợp này, Dù, 774 00:37:27,040 --> 00:37:32,630 được lưu trữ tại 0x1-- bất cứ điều gì được lưu trữ tại địa chỉ mà con trỏ của chúng tôi giữ, 775 00:37:32,630 --> 00:37:35,280 có để phù hợp với những gì chúng tôi đã được chỉ định. 776 00:37:35,280 --> 00:37:40,330 Vì vậy, tại 0x1, trong trường hợp này, đây là x. 777 00:37:40,330 --> 00:37:42,500 778 00:37:42,500 --> 00:37:49,340 Điều này chỉ có thể từng là một int trong khi chúng tôi đang sử dụng này. 779 00:37:49,340 --> 00:37:52,950 >> Tương tự như vậy, nếu chúng ta có 1n khác, bất cứ điều gì 780 00:37:52,950 --> 00:37:59,130 địa chỉ được lưu trữ với một y có là cùng một điều char-- với z. 781 00:37:59,130 --> 00:38:05,840 Trong cùng một cách, bất cứ khi nào bạn cố gắng và làm intx bằng 0,4, 782 00:38:05,840 --> 00:38:09,275 nó sẽ hét vào mặt bạn và được như không có, bạn nói rằng bạn muốn một int. 783 00:38:09,275 --> 00:38:10,525 Đây được coi là một int. 784 00:38:10,525 --> 00:38:11,900 Ngừng cố gắng để làm cho nó một phao. 785 00:38:11,900 --> 00:38:14,150 >> Vì vậy, hãy điều là những gì họ muốn. 786 00:38:14,150 --> 00:38:15,159 787 00:38:15,159 --> 00:38:16,200 Hãy để mọi thứ được là chính mình. 788 00:38:16,200 --> 00:38:19,380 789 00:38:19,380 --> 00:38:23,450 Vì vậy, điều lớn chỉ là bất cứ loại con trỏ 790 00:38:23,450 --> 00:38:26,101 đó là, đó là chỉ điều bạn có thể lưu trữ ở đó. 791 00:38:26,101 --> 00:38:26,600 OK? 792 00:38:26,600 --> 00:38:27,910 793 00:38:27,910 --> 00:38:31,160 Với thực tế, như với tuần trước, tất cả mọi thứ 794 00:38:31,160 --> 00:38:32,817 dường như thực sự là loại trừu tượng. 795 00:38:32,817 --> 00:38:34,150 Chúng tôi sẽ làm một số thực hành. 796 00:38:34,150 --> 00:38:36,760 Nó sẽ làm cho ý nghĩa hơn. 797 00:38:36,760 --> 00:38:44,580 >> Vì vậy, tham khảo và dereferencing-- nó thực sự quan trọng để có được những thẳng. 798 00:38:44,580 --> 00:38:46,630 Tôi vẫn phải làm mới tất cả bây giờ và sau đó. 799 00:38:46,630 --> 00:38:48,450 Và tôi như chờ đợi, mà một trong những tôi muốn? 800 00:38:48,450 --> 00:38:56,080 Vì vậy, các ký hiệu thực sự sẽ cung cấp cho bạn tham chiếu hoặc địa chỉ. 801 00:38:56,080 --> 00:39:00,100 Vì vậy, nó trả về địa chỉ trong bộ nhớ trong đó biến được lưu trữ. 802 00:39:00,100 --> 00:39:01,170 803 00:39:01,170 --> 00:39:07,020 Vì vậy, nó sẽ thực sự trở lại với bạn một hệ thập lục phân, trong khi dereferencing nó 804 00:39:07,020 --> 00:39:10,641 thực sự là sẽ cung cấp cho bạn các dữ liệu được lưu trữ ở đó. 805 00:39:10,641 --> 00:39:11,140 OK? 806 00:39:11,140 --> 00:39:12,680 807 00:39:12,680 --> 00:39:16,060 Vì vậy, chúng ta sẽ xem một ví dụ thực sự nhanh chóng, hoặc thực sự lên tới. 808 00:39:16,060 --> 00:39:18,050 809 00:39:18,050 --> 00:39:19,150 >> OK. 810 00:39:19,150 --> 00:39:21,790 Vì vậy, chúng ta phải nghĩ rằng thực sự cẩn thận về việc này. 811 00:39:21,790 --> 00:39:23,860 Vì vậy, ở đây chúng tôi có một số nguyên x. 812 00:39:23,860 --> 00:39:26,485 Tôi sẽ cố gắng và vẽ này ra để tốt nhất của khả năng của mình. 813 00:39:26,485 --> 00:39:30,230 814 00:39:30,230 --> 00:39:32,410 Vì vậy, chúng ta sẽ có khe cắm này x. 815 00:39:32,410 --> 00:39:35,850 816 00:39:35,850 --> 00:39:37,315 Và nó lưu trữ năm. 817 00:39:37,315 --> 00:39:38,640 818 00:39:38,640 --> 00:39:40,090 Địa chỉ của nó là 0x4. 819 00:39:40,090 --> 00:39:41,920 820 00:39:41,920 --> 00:39:43,160 Mát mẻ? 821 00:39:43,160 --> 00:39:44,100 Tất cả các tốt. 822 00:39:44,100 --> 00:39:45,470 >> Vì vậy, bây giờ chúng tôi có con trỏ này. 823 00:39:45,470 --> 00:39:46,916 824 00:39:46,916 --> 00:39:47,990 Đó là ở đây. 825 00:39:47,990 --> 00:39:52,130 826 00:39:52,130 --> 00:39:57,560 Và dấu và cung cấp cho chúng tôi địa chỉ của một cái gì đó. 827 00:39:57,560 --> 00:40:00,780 Vì vậy, trong trường hợp này, đó là địa chỉ của x. 828 00:40:00,780 --> 00:40:01,875 Địa chỉ của x là gì? 829 00:40:01,875 --> 00:40:05,660 830 00:40:05,660 --> 00:40:12,590 04-- và con trỏ này là 0x08. 831 00:40:12,590 --> 00:40:14,490 832 00:40:14,490 --> 00:40:14,990 Mát mẻ? 833 00:40:14,990 --> 00:40:16,570 834 00:40:16,570 --> 00:40:21,570 Vì vậy, bạn có thể nghĩ về điều này con trỏ, 04, chỉ chỉ ở đây. 835 00:40:21,570 --> 00:40:22,840 836 00:40:22,840 --> 00:40:25,740 Và chúng được gọi là con trỏ bởi vì khi chúng tôi nhận được nhiều hơn vào điều này, 837 00:40:25,740 --> 00:40:28,450 bạn sẽ thấy chỉ sự vật. 838 00:40:28,450 --> 00:40:31,470 Và một khối chỉ khác khối sẽ có ý nghĩa hơn rất nhiều. 839 00:40:31,470 --> 00:40:32,760 840 00:40:32,760 --> 00:40:33,890 Vì vậy, đây là hai. 841 00:40:33,890 --> 00:40:38,230 Và sau đó chúng tôi có một số bản sao, đó là 0x0c what--. 842 00:40:38,230 --> 00:40:41,290 843 00:40:41,290 --> 00:40:43,420 Và nó sẽ dereference con trỏ của chúng tôi. 844 00:40:43,420 --> 00:40:46,790 >> Vì vậy, những gì nó nói là OK, đây là con trỏ của chúng tôi. 845 00:40:46,790 --> 00:40:53,090 Giá trị nó lưu là 0x04, Và những gì nó nói là đi đến địa chỉ này 846 00:40:53,090 --> 00:40:54,300 và cho tôi biết những gì trong đó. 847 00:40:54,300 --> 00:40:55,520 848 00:40:55,520 --> 00:40:57,710 Vì vậy, đó là hiệu quả những mũi tên này đang làm. 849 00:40:57,710 --> 00:40:58,750 850 00:40:58,750 --> 00:41:01,280 Bạn có thể nghĩ về điều này như ngôi sao của bạn. 851 00:41:01,280 --> 00:41:05,410 Vì vậy, OK, khi chúng ta làm sao, nó có nghĩa là làm theo. 852 00:41:05,410 --> 00:41:06,810 Đến địa chỉ này. 853 00:41:06,810 --> 00:41:11,430 Và đó là cơ bản chỉ sau mũi tên này để đoạn bộ nhớ này. 854 00:41:11,430 --> 00:41:15,380 Và cung cấp cho chúng tôi những gì trong đó, mà là 5. 855 00:41:15,380 --> 00:41:18,840 Đó là lý do tại sao bản sao của chúng tôi là bằng 5. 856 00:41:18,840 --> 00:41:20,120 Điều đó có ý nghĩa? 857 00:41:20,120 --> 00:41:22,769 Có ai cần tôi phải đi qua đó một lần nữa, hoặc chậm hơn? 858 00:41:22,769 --> 00:41:24,560 Bạn muốn tôi đi qua nó một lần nữa? 859 00:41:24,560 --> 00:41:25,060 OK. 860 00:41:25,060 --> 00:41:27,549 861 00:41:27,549 --> 00:41:28,840 Chúng ta sẽ vẽ lại nó một lần nữa. 862 00:41:28,840 --> 00:41:31,930 863 00:41:31,930 --> 00:41:37,205 Khi chúng tôi bắt đầu, tất cả chúng ta đồng ý chúng tôi có một số đoạn bộ nhớ đó là một biến 864 00:41:37,205 --> 00:41:40,890 x mà chúng ta thiết lập bằng 5. 865 00:41:40,890 --> 00:41:42,910 Chúng tôi không kiểm soát nó ở đâu trong bộ nhớ. 866 00:41:42,910 --> 00:41:45,520 Vì vậy, vị trí này chỉ là tùy tiện được giao. 867 00:41:45,520 --> 00:41:47,770 868 00:41:47,770 --> 00:41:48,731 Tốt không? 869 00:41:48,731 --> 00:41:49,230 OK. 870 00:41:49,230 --> 00:41:50,420 871 00:41:50,420 --> 00:41:53,330 Sau đó chúng ta khởi tạo một con trỏ đến một int. 872 00:41:53,330 --> 00:41:56,900 Đó là lý do tại sao nó được phép để trỏ đến x bởi vì chúng ta có một int ở đây. 873 00:41:56,900 --> 00:42:00,840 Chúng tôi có một đoạn bộ nhớ bởi vì con trỏ này 874 00:42:00,840 --> 00:42:03,485 là một biến giống như bất cứ điều gì khác. 875 00:42:03,485 --> 00:42:06,615 Nó tùy tiện giao một số không gian trong bộ nhớ. 876 00:42:06,615 --> 00:42:07,630 877 00:42:07,630 --> 00:42:10,830 Và địa chỉ của x những gì nó lưu là. 878 00:42:10,830 --> 00:42:13,200 Ký hiệu có nghĩa là địa chỉ của x. 879 00:42:13,200 --> 00:42:14,575 Vì vậy, địa chỉ của x là gì? 880 00:42:14,575 --> 00:42:19,179 881 00:42:19,179 --> 00:42:20,614 >> Đung Đó là zero-- 882 00:42:20,614 --> 00:42:21,280 SPEAKER 1: 0x04. 883 00:42:21,280 --> 00:42:24,350 884 00:42:24,350 --> 00:42:25,940 Vì vậy, then-- cuối cùng. 885 00:42:25,940 --> 00:42:30,650 Chúng tôi có một số copy-- lại chỉ là một biến. 886 00:42:30,650 --> 00:42:32,520 Vì vậy, hãy chỉ định một số vị trí tùy ý. 887 00:42:32,520 --> 00:42:35,260 888 00:42:35,260 --> 00:42:38,080 Và chúng tôi tới đích của con trỏ của chúng tôi. 889 00:42:38,080 --> 00:42:42,490 Ngôi sao có nghĩa là đi đến địa chỉ được lưu giữ trong con trỏ của tôi. 890 00:42:42,490 --> 00:42:44,480 Cho tôi biết những gì đang có. 891 00:42:44,480 --> 00:42:47,290 Vì vậy, địa chỉ lưu trữ trong con trỏ của chúng tôi là 0x04. 892 00:42:47,290 --> 00:42:49,070 893 00:42:49,070 --> 00:42:51,310 Vì vậy, chúng tôi đi đến địa chỉ đó. 894 00:42:51,310 --> 00:42:52,402 895 00:42:52,402 --> 00:42:54,590 Nó chỉ đến địa chỉ đó. 896 00:42:54,590 --> 00:42:57,481 Có gì bên trong khối bộ nhớ này? 897 00:42:57,481 --> 00:42:57,980 Đó là một năm. 898 00:42:57,980 --> 00:42:59,210 899 00:42:59,210 --> 00:43:01,650 Vì vậy, đó là những gì chúng ta gán bản sao của chúng tôi. 900 00:43:01,650 --> 00:43:03,430 901 00:43:03,430 --> 00:43:04,860 Tất cả mọi người tốt? 902 00:43:04,860 --> 00:43:05,360 Cool. 903 00:43:05,360 --> 00:43:07,010 904 00:43:07,010 --> 00:43:08,330 Hình ảnh Again--. 905 00:43:08,330 --> 00:43:19,750 906 00:43:19,750 --> 00:43:25,200 >> Vì vậy, theo dõi các giá trị here-- tôi sẽ để cho các bạn nghĩ về điều này. 907 00:43:25,200 --> 00:43:26,550 908 00:43:26,550 --> 00:43:27,750 Chúng ta có thể rút ra một hình ảnh. 909 00:43:27,750 --> 00:43:31,260 Nhưng tôi muốn bạn để thử và lý do thông qua điều này một mình trong một phút. 910 00:43:31,260 --> 00:44:01,430 911 00:44:01,430 --> 00:44:04,149 >> Vì họ đã không đưa ra chúng tôi một địa chỉ ví dụ, 912 00:44:04,149 --> 00:44:06,940 Tôi chỉ cần đi để làm ký hiệu x-- mà nên giúp lái xe về nhà. 913 00:44:06,940 --> 00:44:07,950 Ký hiệu có nghĩa là địa chỉ. 914 00:44:07,950 --> 00:44:09,540 915 00:44:09,540 --> 00:44:12,360 >> Vì vậy, trong một đầu tiên, tất cả mọi người đi với dòng đầu tiên. 916 00:44:12,360 --> 00:44:15,690 Một số x bộ của một số five-- khe cắm ngẫu nhiên trong bộ nhớ. 917 00:44:15,690 --> 00:44:17,660 918 00:44:17,660 --> 00:44:23,200 Con trỏ sao Int bằng đến địa chỉ của x, phải không? 919 00:44:23,200 --> 00:44:28,180 Int con trỏ sao tạo khối này, gọi nó là con trỏ, 920 00:44:28,180 --> 00:44:30,650 và gán nó vào địa chỉ của x. 921 00:44:30,650 --> 00:44:32,750 922 00:44:32,750 --> 00:44:34,230 Tôi khủng khiếp tại ampersands. 923 00:44:34,230 --> 00:44:36,460 924 00:44:36,460 --> 00:44:40,550 >> Bây giờ những gì chúng tôi đang làm chúng ta nói là OK, tới đích của con trỏ của chúng tôi. 925 00:44:40,550 --> 00:44:42,760 Vì vậy, chúng tôi đi OK, những gì trong con trỏ của chúng tôi? 926 00:44:42,760 --> 00:44:44,820 Đó là ký hiệu x. 927 00:44:44,820 --> 00:44:49,400 Tới dấu và x và gán nó. 928 00:44:49,400 --> 00:44:51,620 929 00:44:51,620 --> 00:44:57,480 >> Vì vậy, bây giờ, ký hiệu x sẽ là 35. 930 00:44:57,480 --> 00:45:01,540 931 00:45:01,540 --> 00:45:05,174 Vì vậy, về cơ bản, khi bạn dereferencing, bạn đi OK. 932 00:45:05,174 --> 00:45:07,090 Bạn sẽ được vẽ hình ảnh như thế này. 933 00:45:07,090 --> 00:45:09,423 Bạn sẽ được vẽ mũi tên của bạn trên nó ở đâu. 934 00:45:09,423 --> 00:45:16,030 Vì vậy, đi đến khe này trong bộ nhớ và một trong hai cho tôi mà lại giá trị, hoặc thay đổi nó. 935 00:45:16,030 --> 00:45:21,620 Trong trường hợp này, bởi vì chúng tôi đang ở đây giá trị, chúng ta đang gán cho nó là 35. 936 00:45:21,620 --> 00:45:24,700 Trong khi đó, ở cuối cùng một, nếu bạn thông báo, chúng tôi 937 00:45:24,700 --> 00:45:27,680 được giao những gì đã ở đây cái gì khác. 938 00:45:27,680 --> 00:45:30,450 939 00:45:30,450 --> 00:45:32,245 >> Vì vậy, họ có bàn tuyệt vời này. 940 00:45:32,245 --> 00:45:35,000 941 00:45:35,000 --> 00:45:36,890 Nó không phải là xấu. 942 00:45:36,890 --> 00:45:37,970 Các bạn làm việc trên nó. 943 00:45:37,970 --> 00:45:39,640 Tôi sẽ vẽ nó ra trên diễn đàn. 944 00:45:39,640 --> 00:45:41,306 Chúng tôi sẽ điền vào nó ra với nhau, OK? 945 00:45:41,306 --> 00:45:42,290 946 00:45:42,290 --> 00:45:45,530 Vì vậy, lấy một số giấy, lấy một đối tác, bắt đầu làm việc. 947 00:45:45,530 --> 00:45:53,897 948 00:45:53,897 --> 00:45:55,605 Tôi sẽ có được một mảnh lớn của phấn. 949 00:45:55,605 --> 00:45:56,624 950 00:45:56,624 --> 00:45:58,150 Bởi vì nó sẽ là rất nhiều. 951 00:45:58,150 --> 00:45:59,410 952 00:45:59,410 --> 00:45:59,910 OK. 953 00:45:59,910 --> 00:48:08,567 954 00:48:08,567 --> 00:48:09,150 GIÁO SƯ: OK. 955 00:48:09,150 --> 00:48:11,599 956 00:48:11,599 --> 00:48:12,890 Hãy bắt đầu với hàng đầu tiên. 957 00:48:12,890 --> 00:48:14,070 958 00:48:14,070 --> 00:48:16,970 Chúng tôi sẽ bắt đầu ở đó, sau đó các bạn có thể có thể làm việc thông qua một số chi tiết. 959 00:48:16,970 --> 00:48:17,870 OK. 960 00:48:17,870 --> 00:48:19,810 một lần bằng b c như vậy là những gì một? 961 00:48:19,810 --> 00:48:21,420 962 00:48:21,420 --> 00:48:23,260 Nó không phải là một câu hỏi lừa, tôi hứa. 963 00:48:23,260 --> 00:48:24,440 >> HỌC SINH: 4 lần 5. 964 00:48:24,440 --> 00:48:25,420 >> GIÁO SƯ: 4 lần 5. 965 00:48:25,420 --> 00:48:25,920 20. 966 00:48:25,920 --> 00:48:26,730 Vì vậy, b là những gì? 967 00:48:26,730 --> 00:48:27,921 968 00:48:27,921 --> 00:48:28,420 HỌC SINH: 4. 969 00:48:28,420 --> 00:48:30,204 970 00:48:30,204 --> 00:48:31,043 >> GIÁO SƯ: Và c? 971 00:48:31,043 --> 00:48:31,542 HỌC SINH: 5. 972 00:48:31,542 --> 00:48:32,083 GIÁO SƯ: 5. 973 00:48:32,083 --> 00:48:35,960 Và sau đó điều này là chỉ cần đi để được ký hiệu a, ký hiệu b, 974 00:48:35,960 --> 00:48:38,575 ký hiệu c, phải không? 975 00:48:38,575 --> 00:48:39,728 976 00:48:39,728 --> 00:48:40,596 Không xấu. 977 00:48:40,596 --> 00:48:42,081 Nó đơn giản đủ. 978 00:48:42,081 --> 00:48:42,580 OK. 979 00:48:42,580 --> 00:48:44,300 Vì vậy, một trong những tiếp theo. 980 00:48:44,300 --> 00:48:48,725 A bằng một lần c, trong trường hợp bất cứ ai không quen với điều đó. 981 00:48:48,725 --> 00:48:49,812 982 00:48:49,812 --> 00:48:53,300 Là tất cả mọi người quen thuộc với thời gian tương đương? 983 00:48:53,300 --> 00:49:00,105 OK, tất cả điều này means-- này là viết tắt cho một tương đương với một lần c. 984 00:49:00,105 --> 00:49:04,840 Bạn cũng có thể làm điều đó với các bộ phận, với Ngoài ra, với phép trừ. 985 00:49:04,840 --> 00:49:12,130 Bạn có thể làm một người ngang hàng, hoặc một cộng bằng c có nghĩa là tương đương với một cộng c, trừ một bằng 986 00:49:12,130 --> 00:49:15,190 c sẽ là một bằng một trừ c. 987 00:49:15,190 --> 00:49:16,690 Nó chỉ là cú pháp đường. 988 00:49:16,690 --> 00:49:19,380 989 00:49:19,380 --> 00:49:24,140 >> Vì vậy, trong trường hợp này, một là bằng một lần c sẽ cung cấp cho chúng ta những gì? 990 00:49:24,140 --> 00:49:25,910 991 00:49:25,910 --> 00:49:28,186 Một lần nữa, không phải là một câu hỏi trick. 992 00:49:28,186 --> 00:49:28,965 >> HỌC SINH: 100. 993 00:49:28,965 --> 00:49:29,300 >> GIÁO SƯ: 100. 994 00:49:29,300 --> 00:49:30,383 Có bất cứ điều gì thay đổi? 995 00:49:30,383 --> 00:49:31,790 996 00:49:31,790 --> 00:49:32,290 Không. 997 00:49:32,290 --> 00:49:37,380 998 00:49:37,380 --> 00:49:39,850 Có lẽ tôi cuối cùng sẽ nhận được tốt hơn ở ampersands của tôi. 999 00:49:39,850 --> 00:49:42,047 >> SINH VIÊN: OK, xin lỗi, làm thế nào bạn nhận được 100? 1000 00:49:42,047 --> 00:49:42,630 GIÁO SƯ: OK. 1001 00:49:42,630 --> 00:49:46,594 Vì vậy, một là bằng một lần c, do đó, một lần c. 1002 00:49:46,594 --> 00:49:48,510 HỌC SINH: Oh, bạn đang sử dụng một cho previous-- 1003 00:49:48,510 --> 00:49:49,135 GIÁO SƯ: Có. 1004 00:49:49,135 --> 00:49:51,450 Vì vậy, đây là những giá trị mới nhất của chúng tôi. 1005 00:49:51,450 --> 00:49:53,990 Đây là những gì bạn nên có sử dụng như chúng tôi di chuyển xuống, OK. 1006 00:49:53,990 --> 00:49:57,290 1007 00:49:57,290 --> 00:50:01,520 Vì vậy, b là điều thay đổi duy nhất, phải không? 1008 00:50:01,520 --> 00:50:02,910 Vì vậy, hãy điền vào tất cả mọi thứ khác. 1009 00:50:02,910 --> 00:50:09,110 1010 00:50:09,110 --> 00:50:11,330 B. b là gì sẽ được? 1011 00:50:11,330 --> 00:50:13,020 1012 00:50:13,020 --> 00:50:14,140 Để được hay không được. 1013 00:50:14,140 --> 00:50:18,680 1014 00:50:18,680 --> 00:50:20,240 Vì vậy, những gì là điều này đang làm gì? 1015 00:50:20,240 --> 00:50:21,605 Ngôi sao pa đang làm gì? 1016 00:50:21,605 --> 00:50:23,280 1017 00:50:23,280 --> 00:50:25,350 >> HỌC SINH: Mã đến vị trí của pa. 1018 00:50:25,350 --> 00:50:26,390 1019 00:50:26,390 --> 00:50:27,480 >> HỌC SINH: Không, không hoàn toàn. 1020 00:50:27,480 --> 00:50:29,470 Vì vậy, đây là một tài liệu tham khảo d. 1021 00:50:29,470 --> 00:50:31,580 >> SINH VIÊN: Vì vậy, b là giá trị tay của pa. 1022 00:50:31,580 --> 00:50:37,340 >> GIÁO SƯ: Yeah, vì vậy pa là địa chỉ của một, phải không? 1023 00:50:37,340 --> 00:50:42,430 Vì vậy, nó nói đi đến nơi một là lưu trữ và cung cấp cho nó giá trị đó. 1024 00:50:42,430 --> 00:50:43,884 Vì vậy, b là gì? 1025 00:50:43,884 --> 00:50:44,425 HỌC SINH: 100. 1026 00:50:44,425 --> 00:50:46,534 GIÁO SƯ: 100. 1027 00:50:46,534 --> 00:50:47,450 Perfect. 1028 00:50:47,450 --> 00:50:49,879 OK, như vậy máy là những gì đang thay đổi. 1029 00:50:49,879 --> 00:50:51,170 Mọi thứ khác vẫn như cũ. 1030 00:50:51,170 --> 00:50:57,160 1031 00:50:57,160 --> 00:50:58,620 Những gì được máy tính sẽ được? 1032 00:50:58,620 --> 00:51:00,770 1033 00:51:00,770 --> 00:51:01,580 Chuyển nhượng đơn giản. 1034 00:51:01,580 --> 00:51:03,520 1035 00:51:03,520 --> 00:51:05,990 Pc bằng pa, và là những gì pa? 1036 00:51:05,990 --> 00:51:07,049 >> HỌC SINH: ký hiệu a. 1037 00:51:07,049 --> 00:51:07,840 GIÁO SƯ: Hoàn hảo. 1038 00:51:07,840 --> 00:51:09,490 1039 00:51:09,490 --> 00:51:10,740 Bây giờ chúng tôi đang nhận được thú vị. 1040 00:51:10,740 --> 00:51:12,310 1041 00:51:12,310 --> 00:51:15,230 OK, chúng ta hãy phá vỡ này xuống. 1042 00:51:15,230 --> 00:51:21,110 Đầu tiên, thời gian b c là những gì, bởi vì đó là phần dễ dàng của một này, phải không? 1043 00:51:21,110 --> 00:51:22,360 Lần B c is-- 1044 00:51:22,360 --> 00:51:23,320 >> HỌC SINH: 500. 1045 00:51:23,320 --> 00:51:28,880 >> GIÁO SƯ: Yeah, vì vậy những gì là một trong những điều này làm, 1046 00:51:28,880 --> 00:51:33,705 nếu nó pb sao, những gì đang thay đổi? 1047 00:51:33,705 --> 00:51:35,320 1048 00:51:35,320 --> 00:51:37,242 >> HỌC SINH: Có gì trong the-- 1049 00:51:37,242 --> 00:51:38,200 GIÁO SƯ: Có gì trong b? 1050 00:51:38,200 --> 00:51:41,340 HỌC SINH: Có gì trong không gian pb mà được trỏ đến. 1051 00:51:41,340 --> 00:51:43,406 GIÁO SƯ: Và pb đang chỉ đối với: 1052 00:51:43,406 --> 00:51:43,905 HỌC SINH: B. 1053 00:51:43,905 --> 00:51:46,740 GIÁO SƯ: B. Vì vậy, các chỉ Điều thay đổi là b, phải. 1054 00:51:46,740 --> 00:51:50,800 Vì vậy, b lần c, 500. 1055 00:51:50,800 --> 00:51:52,367 Vì vậy, đó là những gì thay đổi ngay bây giờ. 1056 00:51:52,367 --> 00:51:59,091 1057 00:51:59,091 --> 00:51:59,590 Cool. 1058 00:51:59,590 --> 00:52:00,340 1059 00:52:00,340 --> 00:52:00,840 Đáng yêu. 1060 00:52:00,840 --> 00:52:01,905 Các bạn đang làm rất tốt. 1061 00:52:01,905 --> 00:52:03,650 1062 00:52:03,650 --> 00:52:06,740 Tất cả các bên phải, phá vỡ này xuống. 1063 00:52:06,740 --> 00:52:08,050 1064 00:52:08,050 --> 00:52:09,630 C đang thay đổi, phải không? 1065 00:52:09,630 --> 00:52:11,530 Vì vậy, chúng ta có thể điền vào tất cả mọi thứ khác. 1066 00:52:11,530 --> 00:52:12,540 1067 00:52:12,540 --> 00:52:13,205 Hãy xem. 1068 00:52:13,205 --> 00:52:19,125 1069 00:52:19,125 --> 00:52:19,625 OK. 1070 00:52:19,625 --> 00:52:21,420 1071 00:52:21,420 --> 00:52:24,740 Chúng ta biết rằng c là có được các sản phẩm của hai số, phải không? 1072 00:52:24,740 --> 00:52:26,290 1073 00:52:26,290 --> 00:52:27,980 Những gì hai con số, mặc dù? 1074 00:52:27,980 --> 00:52:28,970 >> HỌC SINH: A và c? 1075 00:52:28,970 --> 00:52:31,930 >> GIÁO SƯ: Vì vậy, một là phù hợp với một trong những đầu tiên. 1076 00:52:31,930 --> 00:52:34,385 Vì vậy, chúng tôi đang tham khảo: D p của một, phải không? 1077 00:52:34,385 --> 00:52:35,390 1078 00:52:35,390 --> 00:52:42,870 P của một điểm đến, vì vậy chúng tôi biết rằng này là có được 100 lần những gì? 1079 00:52:42,870 --> 00:52:46,232 Thời điểm nào máy tính nào để? 1080 00:52:46,232 --> 00:52:47,410 1081 00:52:47,410 --> 00:52:48,740 Trỏ đến một. 1082 00:52:48,740 --> 00:52:55,038 Vì vậy 100 lần 100 là 10.000. 1083 00:52:55,038 --> 00:52:56,170 Điều đó làm cho tinh thần? 1084 00:52:56,170 --> 00:52:57,640 1085 00:52:57,640 --> 00:52:58,200 Cool. 1086 00:52:58,200 --> 00:53:00,500 Trang chủ căng, guys, hàng cuối cùng. 1087 00:53:00,500 --> 00:53:01,190 OK. 1088 00:53:01,190 --> 00:53:02,160 Có gì thay đổi ở đây? 1089 00:53:02,160 --> 00:53:05,640 1090 00:53:05,640 --> 00:53:06,935 >> HỌC SINH: A. 1091 00:53:06,935 --> 00:53:09,435 GIÁO SƯ: A. hoàn hảo, vì vậy tất cả mọi thứ khác có thể giữ nguyên. 1092 00:53:09,435 --> 00:53:16,210 1093 00:53:16,210 --> 00:53:16,710 OK. 1094 00:53:16,710 --> 00:53:17,970 Và một là những gì? 1095 00:53:17,970 --> 00:53:23,610 1096 00:53:23,610 --> 00:53:26,060 Vì vậy, đó là một lần những gì? 1097 00:53:26,060 --> 00:53:27,120 Đây là ngôi sao pb. 1098 00:53:27,120 --> 00:53:29,750 1099 00:53:29,750 --> 00:53:34,490 Vì vậy, sao pb có nghĩa là đây là pb, điểm pb b. 1100 00:53:34,490 --> 00:53:35,370 >> HỌC SINH: 500. 1101 00:53:35,370 --> 00:53:36,230 >> GIÁO SƯ: 500. 1102 00:53:36,230 --> 00:53:39,236 Vì vậy, chúng tôi có 500 lần 100. 1103 00:53:39,236 --> 00:53:41,758 Đó là 50.000. 1104 00:53:41,758 --> 00:53:43,216 Phù! 1105 00:53:43,216 --> 00:53:45,646 Nhìn vào đó. 1106 00:53:45,646 --> 00:53:47,982 >> HỌC SINH: Tại sao chúng ta có các & c cho last-- 1107 00:53:47,982 --> 00:53:48,690 GIÁO SƯ: Xin lỗi. 1108 00:53:48,690 --> 00:53:50,080 HỌC SINH: Oh, OK. 1109 00:53:50,080 --> 00:53:51,600 GIÁO SƯ: xấu của tôi. 1110 00:53:51,600 --> 00:53:52,890 Rất nhiều văn bản. 1111 00:53:52,890 --> 00:53:53,917 1112 00:53:53,917 --> 00:53:54,500 Tất cả mọi người tốt? 1113 00:53:54,500 --> 00:53:55,630 1114 00:53:55,630 --> 00:53:56,660 Không quá xấu, phải không? 1115 00:53:56,660 --> 00:53:58,490 Chỉ cần mất một ít trong khi làm việc thông qua. 1116 00:53:58,490 --> 00:54:01,080 Nếu bạn phá vỡ nó xuống, hiểu nhau phần nào 1117 00:54:01,080 --> 00:54:03,197 được đề cập như đối với: với tất cả mọi thứ nó, 1118 00:54:03,197 --> 00:54:05,780 yes-- phá vỡ nó xuống ít vấn đề và sau đó tái kết hợp, 1119 00:54:05,780 --> 00:54:07,345 và bạn có thể làm một số công cụ tuyệt vời. 1120 00:54:07,345 --> 00:54:08,970 Có câu trả lời, nhưng chúng tôi đã làm điều đó. 1121 00:54:08,970 --> 00:54:10,324 1122 00:54:10,324 --> 00:54:11,115 Số học con trỏ. 1123 00:54:11,115 --> 00:54:13,961 1124 00:54:13,961 --> 00:54:14,460 Ah. 1125 00:54:14,460 --> 00:54:15,510 Bàn tay của tôi là tất cả phấn. 1126 00:54:15,510 --> 00:54:17,970 Vì vậy, thêm hoặc trừ đi int điều chỉnh con trỏ 1127 00:54:17,970 --> 00:54:21,890 bởi kích thước của các loại con trỏ. 1128 00:54:21,890 --> 00:54:22,940 1129 00:54:22,940 --> 00:54:28,390 Nhớ làm thế nào tất cả các loại có kích thước khác nhau? 1130 00:54:28,390 --> 00:54:34,890 Vì vậy, giống như một đôi hoặc một là lâu dài tám và int là bốn nhưng char là một. 1131 00:54:34,890 --> 00:54:38,360 >> Vì vậy, những gì bạn muốn làm is-- một điều cần nhớ 1132 00:54:38,360 --> 00:54:44,080 Chỉ có điều là bao nhiêu bạn giá trị con trỏ thực sự thay đổi 1133 00:54:44,080 --> 00:54:46,550 sẽ phụ thuộc vào loại con trỏ nó được. 1134 00:54:46,550 --> 00:54:50,820 1135 00:54:50,820 --> 00:54:51,820 Mọi người đều tốt với điều này? 1136 00:54:51,820 --> 00:54:52,760 Tôi có thể xóa nó? 1137 00:54:52,760 --> 00:54:53,440 Chúng tôi có tốt không? 1138 00:54:53,440 --> 00:54:53,940 Tuyệt vời. 1139 00:54:53,940 --> 00:55:01,020 1140 00:55:01,020 --> 00:55:07,501 >> Vì vậy, nếu chúng tôi có một số con trỏ that-- này sẽ be-- tôi 1141 00:55:07,501 --> 00:55:08,834 sẽ làm cho nó một con trỏ int. 1142 00:55:08,834 --> 00:55:10,610 1143 00:55:10,610 --> 00:55:12,760 Nó lưu trữ này. 1144 00:55:12,760 --> 00:55:14,210 1145 00:55:14,210 --> 00:55:20,170 Nếu bạn đã nói con trỏ cộng với một, những gì nó sẽ làm gì 1146 00:55:20,170 --> 00:55:23,420 là nó sẽ cập nhật nó bằng kích thước của một int 1147 00:55:23,420 --> 00:55:25,950 bởi vì đó là loại con trỏ nó được. 1148 00:55:25,950 --> 00:55:28,260 >> Với C, mọi thứ đều rất nghiêm ngặt và quy định. 1149 00:55:28,260 --> 00:55:29,440 1150 00:55:29,440 --> 00:55:35,260 Các con trỏ int sẽ cập nhật bởi số lượng không gian một int sẽ mất. 1151 00:55:35,260 --> 00:55:36,260 Một int là bốn byte. 1152 00:55:36,260 --> 00:55:37,650 1153 00:55:37,650 --> 00:55:39,060 >> Vì vậy, điều này sẽ biến thành? 1154 00:55:39,060 --> 00:55:40,876 1155 00:55:40,876 --> 00:55:44,390 Bạn chỉ cần thêm bốn lên này. 1156 00:55:44,390 --> 00:55:50,040 Bây giờ con trỏ của bạn sẽ be-- OK. 1157 00:55:50,040 --> 00:55:51,820 1158 00:55:51,820 --> 00:55:55,380 >> Vì vậy, nếu đó là một char và chúng tôi đã làm con trỏ cộng với một, đó sẽ là gì bây giờ? 1159 00:55:55,380 --> 00:56:00,300 1160 00:56:00,300 --> 00:56:03,330 Nếu nó started-- giả vờ chúng tôi started-- ngay bây giờ nó là 0x08. 1161 00:56:03,330 --> 00:56:04,850 1162 00:56:04,850 --> 00:56:10,850 Bây giờ chúng ta nói rằng đây là một char con trỏ, và chúng tôi đã thêm một. 1163 00:56:10,850 --> 00:56:11,850 Những gì nó sẽ thay đổi? 1164 00:56:11,850 --> 00:56:14,989 1165 00:56:14,989 --> 00:56:16,030 Bao nhiêu byte là một char? 1166 00:56:16,030 --> 00:56:16,680 >> Đung One. 1167 00:56:16,680 --> 00:56:17,304 >> SPEAKER 1: Một. 1168 00:56:17,304 --> 00:56:18,309 Đung Vì vậy, 0x09. 1169 00:56:18,309 --> 00:56:19,600 SPEAKER 1: Vì vậy, nó sẽ chín. 1170 00:56:19,600 --> 00:56:22,571 1171 00:56:22,571 --> 00:56:23,820 Vì vậy, chỉ một cái gì đó để nhớ. 1172 00:56:23,820 --> 00:56:28,340 Chỉ khi bạn thêm một, nó không thêm một trừ khi đó là một char. 1173 00:56:28,340 --> 00:56:34,190 Nó thêm bao nhiêu byte loại đó là, 1174 00:56:34,190 --> 00:56:36,960 đó là lý do tại sao chúng tôi có phương trình này lên đây. 1175 00:56:36,960 --> 00:56:40,190 Vì vậy, nó lần int kích thước của các loại con trỏ. 1176 00:56:40,190 --> 00:56:42,850 1177 00:56:42,850 --> 00:56:44,730 >> Vì vậy, chúng ta có ví dụ ở đây. 1178 00:56:44,730 --> 00:56:47,250 1179 00:56:47,250 --> 00:56:54,430 y được gán cho giá trị đó, 0x4, khi chúng tôi đã làm y cộng tương đương với một. 1180 00:56:54,430 --> 00:56:56,830 Có gì trong đó, có chuyện gì trong x, không thay đổi. 1181 00:56:56,830 --> 00:56:58,610 Gì thay đổi là những gì trong y. 1182 00:56:58,610 --> 00:57:04,980 Các địa chỉ được lưu trữ trong y cập nhật bởi bốn bởi vì có bốn byte trong một int 1183 00:57:04,980 --> 00:57:06,097 và nó là một con trỏ int. 1184 00:57:06,097 --> 00:57:07,290 1185 00:57:07,290 --> 00:57:07,790 >> Được rồi. 1186 00:57:07,790 --> 00:57:09,123 Vì vậy, bây giờ chúng tôi có một tập thể dục. 1187 00:57:09,123 --> 00:57:11,140 1188 00:57:11,140 --> 00:57:13,500 Vì vậy, câu hỏi là những gì sẽ được in. 1189 00:57:13,500 --> 00:57:36,710 1190 00:57:36,710 --> 00:57:37,650 Bất cứ ý tưởng? 1191 00:57:37,650 --> 00:57:41,690 1192 00:57:41,690 --> 00:57:43,699 >> Đung Số lượng nhân vật trong hạnh phúc con mèo? 1193 00:57:43,699 --> 00:57:44,490 SPEAKER 1: Chính xác. 1194 00:57:44,490 --> 00:57:45,531 Vì vậy thích với chuỗi của bạn. 1195 00:57:45,531 --> 00:57:47,302 1196 00:57:47,302 --> 00:57:48,260 Có tất cả mọi người được điều đó? 1197 00:57:48,260 --> 00:57:49,509 Chúng ta muốn đi qua nó? 1198 00:57:49,509 --> 00:57:50,300 1199 00:57:50,300 --> 00:57:52,010 >> Vâng, OK. 1200 00:57:52,010 --> 00:57:57,385 Vì vậy, những gì chúng tôi có here-- tôi như thế này nhiều hơn nữa. 1201 00:57:57,385 --> 00:57:59,340 Tôi không phải [Không nghe được] lố bịch. 1202 00:57:59,340 --> 00:58:01,690 >> Vì vậy, chúng tôi có chuỗi của chúng tôi ở đây, hạnh phúc con mèo. 1203 00:58:01,690 --> 00:58:02,950 Đáng yêu. 1204 00:58:02,950 --> 00:58:05,080 Chúng tôi có một số truy cập mà chúng tôi đang theo dõi. 1205 00:58:05,080 --> 00:58:11,430 Vì vậy, chúng tôi có một số char * con trỏ mà chỉ được thiết lập bằng str. 1206 00:58:11,430 --> 00:58:14,320 Điều này đang làm là nó phân công một số con trỏ 1207 00:58:14,320 --> 00:58:16,380 đến đầu của chuỗi của bạn. 1208 00:58:16,380 --> 00:58:19,840 Bởi vì tôi là chắc chắn, vì nó đã được đề cập trong bài giảng, 1209 00:58:19,840 --> 00:58:22,290 chúng tôi đã cho các bạn này kiểu dữ liệu được gọi là chuỗi. 1210 00:58:22,290 --> 00:58:29,070 >> Nhưng thực sự là chuỗi chỉ một mảng of-- như char *. 1211 00:58:29,070 --> 00:58:32,330 Đó là một con trỏ đến một loạt các nhân vật nằm kề trong bộ nhớ. 1212 00:58:32,330 --> 00:58:33,680 1213 00:58:33,680 --> 00:58:36,280 Vì vậy, đây chỉ là đặt nó bằng bất kỳ chuỗi là 1214 00:58:36,280 --> 00:58:38,980 xác định bởi nơi ký tự đầu tiên của nó là. 1215 00:58:38,980 --> 00:58:42,710 Vì vậy, đây chỉ là thiết lập một số điểm bằng đầu của chuỗi. 1216 00:58:42,710 --> 00:58:44,130 Tất cả mọi người tốt không? 1217 00:58:44,130 --> 00:58:44,960 Cool. 1218 00:58:44,960 --> 00:58:49,840 >> Vì vậy, đây là dereferencing con trỏ của chúng tôi. 1219 00:58:49,840 --> 00:58:53,760 Vì vậy, nó thực sự đi vào cung cấp cho chúng tôi một số giá trị ở đây, 1220 00:58:53,760 --> 00:58:55,610 trong chuỗi mà chúng ta đang nói về. 1221 00:58:55,610 --> 00:58:58,342 Và chúng ta đang nói miễn là nó không phải null terminator. 1222 00:58:58,342 --> 00:59:00,550 Vì vậy, tiếp tục đi cho đến khi bạn nhận được đến cuối của chuỗi. 1223 00:59:00,550 --> 00:59:02,180 1224 00:59:02,180 --> 00:59:04,190 Cập nhật con trỏ của bạn bằng một. 1225 00:59:04,190 --> 00:59:09,250 Vì vậy, r, nó sẽ thực sự cập nhật bởi một mỗi lần bởi vì đây là một char, 1226 00:59:09,250 --> 00:59:09,820 char *. 1227 00:59:09,820 --> 00:59:10,930 1228 00:59:10,930 --> 00:59:12,340 >> Vì vậy, nó sẽ đi qua. 1229 00:59:12,340 --> 00:59:13,290 Nó sẽ cập nhật. 1230 00:59:13,290 --> 00:59:16,705 Vì vậy, lần đầu tiên chạy, nó sẽ có mặt ở đây h. 1231 00:59:16,705 --> 00:59:17,590 Nó sẽ cập nhật. 1232 00:59:17,590 --> 00:59:18,185 >> Nó sẽ là một một. 1233 00:59:18,185 --> 00:59:21,310 Nó sẽ là một p, y, vv và vv. 1234 00:59:21,310 --> 00:59:22,300 Chúng tôi sẽ cập nhật truy cập. 1235 00:59:22,300 --> 00:59:26,160 Khi đi đến cuối đường, nó chỉ cần in như thế nào đến nay nó nhận được. 1236 00:59:26,160 --> 00:59:27,550 1237 00:59:27,550 --> 00:59:28,050 Vâng. 1238 00:59:28,050 --> 00:59:31,475 >> Đung Vì vậy, Nó đếm không gian như một, phải không? 1239 00:59:31,475 --> 00:59:31,974 OK. 1240 00:59:31,974 --> 00:59:34,294 1241 00:59:34,294 --> 00:59:35,222 >> SPEAKER 1: Hãy suy nghĩ như vậy. 1242 00:59:35,222 --> 00:59:36,830 Là một question-- 1243 00:59:36,830 --> 00:59:37,746 >> Đung [không nghe được]. 1244 00:59:37,746 --> 00:59:37,968 1245 00:59:37,968 --> 00:59:38,884 >> SPEAKER 1: Không có lo lắng. 1246 00:59:38,884 --> 00:59:39,720 1247 00:59:39,720 --> 00:59:42,736 Điều này tôi làm điều đó. 1248 00:59:42,736 --> 00:59:47,710 Tất cả các bên phải, vì vậy có một điều tôi hiểu là với một mảng, 1249 00:59:47,710 --> 00:59:51,736 bạn cũng có thể coi nó như một con trỏ vì mảng là chỉ 1250 00:59:51,736 --> 00:59:52,860 điểm liên tục của bộ nhớ. 1251 00:59:52,860 --> 00:59:53,970 1252 00:59:53,970 --> 00:59:56,380 >> Vì vậy, bạn có thể đối xử với nó theo cùng một cách. 1253 00:59:56,380 --> 00:59:59,000 Bạn có thể thao tác chúng với con trỏ, quá. 1254 00:59:59,000 --> 01:00:04,770 Vì vậy, thay vì làm, trong này trường hợp, điều tương tự 1255 01:00:04,770 --> 01:00:07,490 sẽ là mảng 0 bằng 1. 1256 01:00:07,490 --> 01:00:08,760 1257 01:00:08,760 --> 01:00:15,210 >> Nhưng trong cùng một cách mà một chuỗi được xác định 1258 01:00:15,210 --> 01:00:18,740 bởi sự bắt đầu của nơi ký tự đầu tiên của nó là, 1259 01:00:18,740 --> 01:00:22,270 một mảng được xác định bởi nơi mà yếu tố đầu tiên của nó là. 1260 01:00:22,270 --> 01:00:25,120 Bởi vì chúng tôi biết, chúng tôi đảm bảo rằng những 1261 01:00:25,120 --> 01:00:27,985 sẽ được liên tục khối của bộ nhớ. 1262 01:00:27,985 --> 01:00:29,360 Đó là những gì cho phép chúng ta làm điều này. 1263 01:00:29,360 --> 01:00:31,193 Chúng tôi biết họ đang liên tục khối của bộ nhớ. 1264 01:00:31,193 --> 01:00:32,230 1265 01:00:32,230 --> 01:00:36,500 >> Vì vậy, trong trường hợp này, bởi dereferencing chỉ mảng, mà nói với chúng tôi, 1266 01:00:36,500 --> 01:00:40,800 OK, đi đầu mảng của bạn, mà là ở đây. 1267 01:00:40,800 --> 01:00:42,640 Vì vậy, bạn có thể thiết lập nó bằng một. 1268 01:00:42,640 --> 01:00:48,610 Và trong trường hợp này, bất cứ điều gì mảng của bạn loại là, khi bạn cập nhật nó bằng một, 1269 01:00:48,610 --> 01:00:50,830 đó là giống như cập nhật nó để chỉ số tiếp theo. 1270 01:00:50,830 --> 01:00:52,760 1271 01:00:52,760 --> 01:00:56,360 Bạn có thể làm điều đó bởi vì bạn biết những gì trong mảng của bạn. 1272 01:00:56,360 --> 01:00:59,770 Vì vậy, nó biết bao nhiêu cập nhật con trỏ của bạn bằng cách, 1273 01:00:59,770 --> 01:01:02,925 những địa chỉ để cập nhật nó đến như vậy rằng bạn đang ở khe tiếp theo. 1274 01:01:02,925 --> 01:01:04,740 1275 01:01:04,740 --> 01:01:09,400 >> Vì vậy, đây chỉ là một cách khác nhau viết mảng 0 bằng 1, 1276 01:01:09,400 --> 01:01:15,114 mảng 1 bằng 2, mảng khung 2 bằng 3. 1277 01:01:15,114 --> 01:01:16,780 Nó chỉ là một cách khác để suy nghĩ về nó. 1278 01:01:16,780 --> 01:01:19,600 Bởi vì họ là liên tục khối trong bộ nhớ, 1279 01:01:19,600 --> 01:01:21,830 bạn có thể giới thiệu cho họ một trong hai bởi các mảng notation-- 1280 01:01:21,830 --> 01:01:24,390 mà cá nhân tôi tìm easier-- nhưng có lẽ 1281 01:01:24,390 --> 01:01:27,347 bạn cần phải vận dụng nó đúng địa chỉ bộ nhớ. 1282 01:01:27,347 --> 01:01:28,930 Và đây là cách bạn sẽ làm điều đó. 1283 01:01:28,930 --> 01:01:30,630 1284 01:01:30,630 --> 01:01:32,630 Loại hơn giống như một Điều thú vị bạn có thể làm 1285 01:01:32,630 --> 01:01:35,213 so với có lẽ không phải cái gì bạn thực sự đi vào thực hiện. 1286 01:01:35,213 --> 01:01:36,960 1287 01:01:36,960 --> 01:01:38,630 >> Tôi sử dụng nó trong 61. 1288 01:01:38,630 --> 01:01:41,710 Các bạn có lẽ không cần lo lắng về nó quá nhiều. 1289 01:01:41,710 --> 01:01:43,693 Nhưng nếu bạn quan tâm, mất 61 năm tới. 1290 01:01:43,693 --> 01:01:45,269 1291 01:01:45,269 --> 01:01:46,560 Chúng tôi đang ở trong những kẻ nhà căng. 1292 01:01:46,560 --> 01:01:47,510 Tôi biết, nó dài. 1293 01:01:47,510 --> 01:01:50,570 1294 01:01:50,570 --> 01:01:58,880 Năng động, bộ nhớ Allocation-- vì vậy chúng tôi biết rằng một trong 1295 01:01:58,880 --> 01:02:01,790 của sự vật khi chúng tôi nói chuyện trong Phần đầu tiên của chúng tôi với nhau, 1296 01:02:01,790 --> 01:02:04,560 chúng tôi đã trao đổi chức năng nơi nó được 1297 01:02:04,560 --> 01:02:08,010 ngoài phạm vi chức năng chính của chúng tôi. 1298 01:02:08,010 --> 01:02:14,370 Và chúng tôi đã đi qua trong các giá trị đó là hiệu quả bản. 1299 01:02:14,370 --> 01:02:20,570 >> Và một khi trao đổi xong thực hiện, nó chỉ còn lại một chồng. 1300 01:02:20,570 --> 01:02:22,830 Hãy nhớ rằng, chúng ta có một ngăn xếp khung cho trao đổi. 1301 01:02:22,830 --> 01:02:26,070 Nó lá và những giá trị lại với nó. 1302 01:02:26,070 --> 01:02:27,050 Và họ đã biến mất. 1303 01:02:27,050 --> 01:02:28,615 Chúng tôi không thể làm bất cứ điều gì với họ và chúng tôi đã buồn 1304 01:02:28,615 --> 01:02:29,989 bởi vì chúng tôi không thể trao đổi các giá trị của chúng tôi. 1305 01:02:29,989 --> 01:02:31,070 1306 01:02:31,070 --> 01:02:36,560 >> Nhưng với C, như tôi đã đề cập, bạn có rất nhiều năng lượng hơn bộ nhớ. 1307 01:02:36,560 --> 01:02:43,310 Vì vậy, những gì bạn có thể làm là bạn có thể phân bổ những thứ trên đống ở đây 1308 01:02:43,310 --> 01:02:46,830 mà sẽ ở lại đó cho đến khi bạn nói với họ khác. 1309 01:02:46,830 --> 01:02:48,280 >> Họ giống như những đứa con. 1310 01:02:48,280 --> 01:02:49,150 Họ ở lại đó. 1311 01:02:49,150 --> 01:02:50,270 Họ không để lại. 1312 01:02:50,270 --> 01:02:52,750 Họ sẽ ở lại đó cho đến khi bạn như, OK, bạn có thể đi xa. 1313 01:02:52,750 --> 01:02:55,920 >> Trong khi đó, những thứ trên stack, who-- chúng như những đứa trẻ nghịch ngợm. 1314 01:02:55,920 --> 01:02:59,160 Họ sẽ chỉ cần chạy đi khi bạn muốn được ở đó và sau đó họ đang đi. 1315 01:02:59,160 --> 01:03:00,160 Bạn không thể nhận được chúng trở lại. 1316 01:03:00,160 --> 01:03:01,350 1317 01:03:01,350 --> 01:03:07,187 >> Vì vậy, các đống is-- chúng ta sẽ nói về malloc và miễn phí, 1318 01:03:07,187 --> 01:03:08,895 Tôi chắc rằng các bạn nghe nói về trong bài giảng. 1319 01:03:08,895 --> 01:03:10,270 1320 01:03:10,270 --> 01:03:14,210 Và đó là cơ bản một cách để có dữ liệu rất kiên trì. 1321 01:03:14,210 --> 01:03:18,920 Vì vậy, bạn có thể giữ các dữ liệu xung quanh miễn là bạn muốn. 1322 01:03:18,920 --> 01:03:19,546 MHM. 1323 01:03:19,546 --> 01:03:21,475 >> Đung bạn có thể xác định heap và stack? 1324 01:03:21,475 --> 01:03:24,030 Họ thích những nơi đặt mọi thứ? 1325 01:03:24,030 --> 01:03:26,630 >> SPEAKER 1: Vì vậy, họ về cơ bản just-- họ 1326 01:03:26,630 --> 01:03:29,530 cách chúng ta tham khảo chỉ để nhớ. 1327 01:03:29,530 --> 01:03:37,300 Vì vậy, đống chỉ được đặt ở đâu bộ nhớ được cấp phát động, 1328 01:03:37,300 --> 01:03:40,960 trong khi chồng đề cập hơn để ngăn xếp khung 1329 01:03:40,960 --> 01:03:45,950 là trọng tâm nhiều hơn đến chức năng đang thực sự chạy. 1330 01:03:45,950 --> 01:03:47,200 Bạn không thực sự có quyền kiểm soát. 1331 01:03:47,200 --> 01:03:50,690 >> Sự khác biệt lớn, bạn có kiểm soát trong đống nếu bạn muốn. 1332 01:03:50,690 --> 01:03:52,710 Bạn có quyền kiểm soát ít hơn chồng. 1333 01:03:52,710 --> 01:03:55,030 Stack phụ thuộc vào chức năng đang chạy, 1334 01:03:55,030 --> 01:03:58,320 và thứ tự mà họ chạy, và làm thế nào mọi thứ đang trở lại. 1335 01:03:58,320 --> 01:04:01,290 Trong khi đó, với đống, như chúng ta sẽ thấy, bạn có thể nói, 1336 01:04:01,290 --> 01:04:06,639 OK, tôi muốn giá trị này là xung quanh cho đến khi tôi nói với bạn khác. 1337 01:04:06,639 --> 01:04:08,180 Bạn không được phép để thoát khỏi nó. 1338 01:04:08,180 --> 01:04:09,300 Bạn không được phép ghi đè lên nó. 1339 01:04:09,300 --> 01:04:11,675 Bạn sẽ giữ nó xung quanh cho đến khi tôi nói với bạn. 1340 01:04:11,675 --> 01:04:15,780 Bạn có thể là ông chủ trong đống, trong khi stack-- có lẽ nếu bạn 1341 01:04:15,780 --> 01:04:18,080 như finagle theo cách của bạn bạn có thể là ông chủ. 1342 01:04:18,080 --> 01:04:19,340 Nhưng không hoàn toàn. 1343 01:04:19,340 --> 01:04:20,480 1344 01:04:20,480 --> 01:04:22,070 Và nó thực sự chỉ bộ nhớ. 1345 01:04:22,070 --> 01:04:24,260 Đó là cách chỉ khác nhau đề cập đến bộ nhớ. 1346 01:04:24,260 --> 01:04:25,800 1347 01:04:25,800 --> 01:04:26,400 >> Cool. 1348 01:04:26,400 --> 01:04:28,630 Vì vậy, với điều đó, làm thế nào để kiểm soát bộ nhớ của bạn. 1349 01:04:28,630 --> 01:04:32,070 Đó là với malloc, mà bạn sẽ nhận được để sử dụng. 1350 01:04:32,070 --> 01:04:37,100 Vì vậy, nó chỉ là ngắn để cấp phát bộ nhớ. 1351 01:04:37,100 --> 01:04:38,459 Đó là tất cả nó được. 1352 01:04:38,459 --> 01:04:41,250 Có một loạt các mát mẻ khác chức năng có alloc lúc kết thúc, 1353 01:04:41,250 --> 01:04:42,750 và họ đứng cho những thứ khác nhau. 1354 01:04:42,750 --> 01:04:43,550 1355 01:04:43,550 --> 01:04:49,050 >> Vì vậy, khi bạn cần lưu trữ mà cần để tồn tại lâu hơn chức năng hiện tại của bạn để 1356 01:04:49,050 --> 01:04:51,010 rằng khi hiện tại của bạn chức năng bỏ chạy, 1357 01:04:51,010 --> 01:04:55,774 bạn vẫn còn có dữ liệu mà bạn nhận được từ nó, bạn muốn sử dụng malloc. 1358 01:04:55,774 --> 01:04:57,190 Điều đó sẽ khởi tạo nó trên heap. 1359 01:04:57,190 --> 01:05:00,140 Và như tôi đã nói và giữ nói, bạn sẽ giữ nó ở đó 1360 01:05:00,140 --> 01:05:03,050 cho đến khi bạn nói với nó nếu không, đó là điều quan trọng ở đây. 1361 01:05:03,050 --> 01:05:08,450 >> Vì vậy, một điều cần chú ý, và đó là thường thực sự quan trọng, 1362 01:05:08,450 --> 01:05:13,620 là điều này sizeof là siêu hữu ích để sử dụng 1363 01:05:13,620 --> 01:05:16,440 vì tùy thuộc vào loại của máy bạn đang chạy, 1364 01:05:16,440 --> 01:05:22,470 nó có thể có số lượng khác nhau bộ nhớ mà nó cần. 1365 01:05:22,470 --> 01:05:26,870 Vì vậy, bạn luôn luôn muốn sử dụng kích thước của cái rằng bạn không phải phụ thuộc vào máy, 1366 01:05:26,870 --> 01:05:30,300 để mã của bạn sẽ chạy trên máy tính bất kỳ. 1367 01:05:30,300 --> 01:05:32,360 >> Và đó chỉ là một phần viết mã tốt. 1368 01:05:32,360 --> 01:05:34,610 Nếu nó hoạt động trên một máy, nhưng không phải bất kỳ những người khác, 1369 01:05:34,610 --> 01:05:36,440 như thế nào hữu ích là chương trình của bạn? 1370 01:05:36,440 --> 01:05:38,420 Vì vậy, bạn luôn luôn muốn chắc chắn và sử dụng sizeof. 1371 01:05:38,420 --> 01:05:41,306 >> Đung Vì vậy, là như kích thước 10 inch [không nghe được]? 1372 01:05:41,306 --> 01:05:43,698 >> SPEAKER 1: Đây là kích thước của 10 ints. 1373 01:05:43,698 --> 01:05:44,197 yeah. 1374 01:05:44,197 --> 01:05:45,360 1375 01:05:45,360 --> 01:05:48,830 Vì vậy, kích thước của ints sẽ trở lại bao nhiêu một int mất. 1376 01:05:48,830 --> 01:05:51,530 Hoặc kích thước của char, làm thế nào nhiêu một char mất. 1377 01:05:51,530 --> 01:05:54,150 Và sau đó có bao nhiêu khối của mà bạn muốn? 1378 01:05:54,150 --> 01:05:57,590 >> Vì vậy, trong trường hợp này, chúng tôi muốn một cái gì đó chúng ta có thể lưu trữ 10 ints để. 1379 01:05:57,590 --> 01:06:00,240 Và nó sẽ làm việc bất kể của máy, đó là mát mẻ. 1380 01:06:00,240 --> 01:06:01,720 1381 01:06:01,720 --> 01:06:04,846 Vì vậy, có bao nhiêu byte sẽ mà thực sự cung cấp cho bạn? 1382 01:06:04,846 --> 01:06:06,190 Toán nhanh chóng. 1383 01:06:06,190 --> 01:06:06,787 >> Đung 40. 1384 01:06:06,787 --> 01:06:07,370 SPEAKER 1: 40. 1385 01:06:07,370 --> 01:06:07,869 Chính xác. 1386 01:06:07,869 --> 01:06:09,520 1387 01:06:09,520 --> 01:06:12,030 Vì vậy, điều quan trọng khác. 1388 01:06:12,030 --> 01:06:14,840 Con trỏ hoặc malloc có thể trở lại null. 1389 01:06:14,840 --> 01:06:17,910 >> Vì vậy, một lần nữa, luôn luôn kiểm tra xem nếu nó trở rỗng 1390 01:06:17,910 --> 01:06:19,620 trước khi bạn cố gắng và làm bất cứ điều gì với nó. 1391 01:06:19,620 --> 01:06:23,430 1392 01:06:23,430 --> 01:06:27,350 Nếu bạn cố gắng và tới đích con trỏ này ngay bây giờ, 1393 01:06:27,350 --> 01:06:29,720 nó chỉ sẽ segfault bởi vì bạn đã đi và cố gắng 1394 01:06:29,720 --> 01:06:31,730 chạm vào null khi bạn không nên có. 1395 01:06:31,730 --> 01:06:34,000 Vì vậy, luôn luôn kiểm tra cho null. 1396 01:06:34,000 --> 01:06:36,075 Một lần nữa, tất cả các bạn có thể làm. 1397 01:06:36,075 --> 01:06:38,300 1398 01:06:38,300 --> 01:06:39,720 >> Nó có thể trở về null. 1399 01:06:39,720 --> 01:06:42,740 Nó sẽ trở lại null nếu bạn đang hoặc ra khỏi không gian, hoặc vì lý do gì 1400 01:06:42,740 --> 01:06:44,350 nó chạy vào một số lỗi bộ nhớ. 1401 01:06:44,350 --> 01:06:45,890 1402 01:06:45,890 --> 01:06:47,510 Đôi khi nó chỉ trả về null. 1403 01:06:47,510 --> 01:06:48,990 Vì vậy, bạn chỉ cần có để kiểm tra nó. 1404 01:06:48,990 --> 01:06:51,050 Đó là tất cả slide này nói. 1405 01:06:51,050 --> 01:06:53,366 1406 01:06:53,366 --> 01:06:55,240 Và sau đó những gì chúng tôi có đây là một cuộc gọi miễn phí. 1407 01:06:55,240 --> 01:07:00,550 Vì vậy, trong cùng một cách mà nếu bạn mở một tập tin bạn phải đóng một tập tin, 1408 01:07:00,550 --> 01:07:04,340 nếu bạn nhớ malloc, bạn bạn phải giải phóng bộ nhớ. 1409 01:07:04,340 --> 01:07:06,530 Và các bạn sẽ nhận được để làm công cụ thực sự mát mẻ. 1410 01:07:06,530 --> 01:07:09,624 >> Và có một chương trình mà bạn có thể chạy để xem nếu bạn đã bao giờ bị rò rỉ bộ nhớ. 1411 01:07:09,624 --> 01:07:11,040 Nhưng bạn không muốn bị rò rỉ bộ nhớ. 1412 01:07:11,040 --> 01:07:11,820 Đó là thực sự xấu. 1413 01:07:11,820 --> 01:07:13,191 1414 01:07:13,191 --> 01:07:15,020 Chỉ mess up điều. 1415 01:07:15,020 --> 01:07:20,939 >> Đó là xấu để làm giống như lập trình khôn ngoan cho hiệu quả thiết kế. 1416 01:07:20,939 --> 01:07:22,980 Nhưng nó cũng chỉ loại xấu cho máy tính của bạn. 1417 01:07:22,980 --> 01:07:26,780 Vì vậy những thứ chỉ miễn phí khi bạn malloc họ. 1418 01:07:26,780 --> 01:07:28,190 1419 01:07:28,190 --> 01:07:30,210 >> Các bạn nhìn thấy các đối xứng ở đây. 1420 01:07:30,210 --> 01:07:31,180 Siêu đơn giản. 1421 01:07:31,180 --> 01:07:33,010 Chỉ miễn phí và sau đó bất cứ điều gì con trỏ của bạn, 1422 01:07:33,010 --> 01:07:34,843 bất cứ điều gì tên của con trỏ của bạn, và nó 1423 01:07:34,843 --> 01:07:36,710 sẽ chăm sóc giải phóng nó cho bạn. 1424 01:07:36,710 --> 01:07:38,200 1425 01:07:38,200 --> 01:07:38,700 Cool. 1426 01:07:38,700 --> 01:07:40,410 1427 01:07:40,410 --> 01:07:42,530 >> Sau đó, chúng tôi có điều này. 1428 01:07:42,530 --> 01:07:44,770 Vì vậy, chúng tôi chỉ cần đi để đi bộ qua chương trình này. 1429 01:07:44,770 --> 01:07:46,560 Và sau đó các bạn đã làm xong. 1430 01:07:46,560 --> 01:07:50,240 >> Vì vậy, [không nghe được] chỉ chính. 1431 01:07:50,240 --> 01:07:51,690 Vì vậy, chúng tôi có một số int * con trỏ. 1432 01:07:51,690 --> 01:07:53,648 Vì vậy, chúng tôi có một con trỏ đó là sẽ giữ ints. 1433 01:07:53,648 --> 01:07:54,500 1434 01:07:54,500 --> 01:07:56,170 Và có bao nhiêu ints là nó sẽ giữ? 1435 01:07:56,170 --> 01:07:57,400 1436 01:07:57,400 --> 01:07:58,170 Chỉ cần một. 1437 01:07:58,170 --> 01:07:59,400 1438 01:07:59,400 --> 01:08:01,100 Kích thước của một int. 1439 01:08:01,100 --> 01:08:03,900 >> Chúng tôi kiểm tra xem con trỏ là null vì nó 1440 01:08:03,900 --> 01:08:06,130 là, chúng tôi muốn nói không làm bất cứ điều gì. 1441 01:08:06,130 --> 01:08:07,065 Đó là xấu. 1442 01:08:07,065 --> 01:08:08,130 1443 01:08:08,130 --> 01:08:12,130 Vì vậy, chúng tôi in một số lỗi ra khỏi bộ nhớ, thường trở về 1, 1444 01:08:12,130 --> 01:08:14,260 như các bạn đang sử dụng để. 1445 01:08:14,260 --> 01:08:17,390 >> Và sau đó chúng tôi có ở đây, chúng tôi dereference con trỏ của chúng tôi. 1446 01:08:17,390 --> 01:08:22,840 Vì vậy, điều đó có nghĩa chúng ta sẽ lưu trữ một cái gì đó ở vị trí ban cho chúng ta. 1447 01:08:22,840 --> 01:08:24,350 1448 01:08:24,350 --> 01:08:30,830 Int * con trỏ, hoặc malloc, trả về địa chỉ nơi nó đặt sang một bên này 1449 01:08:30,830 --> 01:08:31,750 bộ nhớ cho bạn. 1450 01:08:31,750 --> 01:08:32,830 1451 01:08:32,830 --> 01:08:34,800 Vì vậy, nó là cơ bản đem lại cho bạn nếu bạn like-- 1452 01:08:34,800 --> 01:08:38,149 suy nghĩ về một loạt các nhà trong một khu phố 1453 01:08:38,149 --> 01:08:40,640 mà bạn muốn đặt đồ nội thất trong, malloc của bạn 1454 01:08:40,640 --> 01:08:43,850 giống như OK, bạn sẽ có được để đi đến nhà ba. 1455 01:08:43,850 --> 01:08:45,800 Và nó sẽ cho bạn địa chỉ của ngôi nhà ba. 1456 01:08:45,800 --> 01:08:48,775 >> Vì vậy, này ngay bây giờ, điều này cửa hàng con trỏ một địa chỉ, 1457 01:08:48,775 --> 01:08:50,149 lưu trữ các địa chỉ nhà của bạn. 1458 01:08:50,149 --> 01:08:51,470 1459 01:08:51,470 --> 01:08:54,640 * Phương tiện ptr, OK, tôi đang ở nhà tôi. 1460 01:08:54,640 --> 01:08:55,326 Cool. 1461 01:08:55,326 --> 01:08:56,580 Tôi cần phải nhận được một số nguyên. 1462 01:08:56,580 --> 01:08:59,229 >> Vì vậy, bạn đang yêu cầu cho một người nào đó để cung cấp cho bạn vài thứ đồ bây giờ. 1463 01:08:59,229 --> 01:09:00,430 Vì vậy, bạn nhận được một số int. 1464 01:09:00,430 --> 01:09:05,100 Và nó sẽ để con trỏ của bạn nơi mà nó trỏ tới. 1465 01:09:05,100 --> 01:09:08,670 >> Và sau đó nó chỉ in ra, bạn nhập vào bất cứ nơi nào. 1466 01:09:08,670 --> 01:09:11,060 Và một lần nữa, các tài liệu tham khảo. 1467 01:09:11,060 --> 01:09:15,649 Vì vậy, điều này giống như bạn đã đi đến này giải quyết và bạn đã thấy những gì đã có. 1468 01:09:15,649 --> 01:09:17,120 1469 01:09:17,120 --> 01:09:17,630 Mát mẻ? 1470 01:09:17,630 --> 01:09:20,174 >> Và sau đó dĩ nhiên chúng tôi giải phóng con trỏ của chúng tôi. 1471 01:09:20,174 --> 01:09:21,590 Đừng quên để giải phóng con trỏ của bạn. 1472 01:09:21,590 --> 01:09:22,933 Đừng quên để kiểm tra null. 1473 01:09:22,933 --> 01:09:24,349 Đừng quên để giải phóng con trỏ của bạn. 1474 01:09:24,349 --> 01:09:27,270 Bạn có hai điều bạn nhớ từ này, hoặc là bạn nên nhớ. 1475 01:09:27,270 --> 01:09:27,770 Vâng. 1476 01:09:27,770 --> 01:09:31,590 Đung [không nghe được] thứ như vậy, char * s. 1477 01:09:31,590 --> 01:09:33,760 Tại sao chúng ta không bao giờ giải phóng những người? 1478 01:09:33,760 --> 01:09:34,529 >> SPEAKER 1: Hm? 1479 01:09:34,529 --> 01:09:36,450 >> Đung là những người như dây? 1480 01:09:36,450 --> 01:09:39,160 Bạn nói dây là giống như char * s, phải không? 1481 01:09:39,160 --> 01:09:41,200 Vậy tại sao chúng ta không giải phóng chuỗi? 1482 01:09:41,200 --> 01:09:43,204 >> SPEAKER 1: Bạn chỉ miễn phí nếu bạn đang mallocing. 1483 01:09:43,204 --> 01:09:44,620 ĐỐI TƯỢNG: Oh, nếu bạn đang mallocing. 1484 01:09:44,620 --> 01:09:47,399 SPEAKER 1: Vì vậy, malloc và miễn phí là hai việc 1485 01:09:47,399 --> 01:09:49,000 mà bạn nên luôn luôn có nhau. 1486 01:09:49,000 --> 01:09:51,630 f mở, f gần, có hai điều bạn nên có với nhau. 1487 01:09:51,630 --> 01:09:54,471 Trong cả hai trường hợp đó, kiểm tra null. 1488 01:09:54,471 --> 01:09:54,971 Vâng. 1489 01:09:54,971 --> 01:09:57,130 >> Đung Vì vậy, miễn phí chỉ là cho phép một cái gì đó khác 1490 01:09:57,130 --> 01:09:59,690 được lưu trữ ở đó sau khi chương trình này đã sử dụng nó? 1491 01:09:59,690 --> 01:10:01,946 >> SPEAKER 1: Nó chỉ nói, OK, tôi đang thực hiện với điều này. 1492 01:10:01,946 --> 01:10:03,320 Bạn không cần phải giữ nó xung quanh. 1493 01:10:03,320 --> 01:10:05,340 1494 01:10:05,340 --> 01:10:08,190 Nếu máy tính của bạn sẽ chỉ thích thử và giữ nó ở đó. 1495 01:10:08,190 --> 01:10:10,910 Và sau đó bạn can't-- nó chạy vào các vấn đề bộ nhớ sau này. 1496 01:10:10,910 --> 01:10:13,660 Bạn luôn luôn muốn giải phóng nó bởi vì nó báo cho máy tính của bạn, OK, tôi 1497 01:10:13,660 --> 01:10:15,190 thực hiện với vị trí này của bộ nhớ. 1498 01:10:15,190 --> 01:10:17,190 Bạn có thể có nó trở lại cho tôi để sử dụng sau này. 1499 01:10:17,190 --> 01:10:19,250 1500 01:10:19,250 --> 01:10:20,500 Mát mẻ? 1501 01:10:20,500 --> 01:10:21,320 Vâng. 1502 01:10:21,320 --> 01:10:26,950 >> Đung Vì vậy, chúng tôi sử dụng% d chỉ bởi vì một đôi đó là quay trở lại, 1503 01:10:26,950 --> 01:10:28,330 hoặc lý do tại sao is-- [không nghe được]. 1504 01:10:28,330 --> 01:10:30,170 1505 01:10:30,170 --> 01:10:31,620 >> Đung bạn có thể sử dụng% i? 1506 01:10:31,620 --> 01:10:32,760 >> SPEAKER 1: Bạn có thể sử dụng% i. 1507 01:10:32,760 --> 01:10:35,052 1508 01:10:35,052 --> 01:10:36,135 Bất kỳ câu hỏi phút cuối cùng? 1509 01:10:36,135 --> 01:10:38,310 1510 01:10:38,310 --> 01:10:38,985 Đi trước. 1511 01:10:38,985 --> 01:10:40,610 ĐỐI TƯỢNG: Tôi chỉ có một câu hỏi nhanh chóng. 1512 01:10:40,610 --> 01:10:50,200 Vì vậy, các biến ptr, that's-- như, với int * ptr = malloc, 1513 01:10:50,200 --> 01:10:54,142 đó chỉ nói rằng nó trỏ đến một vị trí trong memory-- 1514 01:10:54,142 --> 01:10:55,600 SPEAKER 1: Bạn có muốn [không nghe được]? 1515 01:10:55,600 --> 01:10:58,050 Đung --that là kích thước of-- không có, đó là OK. 1516 01:10:58,050 --> 01:11:01,292 Nhưng nó chỉ trỏ đến một vị trí trong bộ nhớ đó là giống như bốn byte. 1517 01:11:01,292 --> 01:11:02,000 SPEAKER 1: Đúng vậy. 1518 01:11:02,000 --> 01:11:03,030 1519 01:11:03,030 --> 01:11:07,070 Vì vậy, malloc kích thước của int nói, OK, tôi sẽ đi chạy ra, 1520 01:11:07,070 --> 01:11:08,780 tìm thấy bốn byte bộ nhớ cho bạn. 1521 01:11:08,780 --> 01:11:10,700 Khi nó tìm thấy rằng bốn byte của bộ nhớ, nó 1522 01:11:10,700 --> 01:11:14,030 cho bạn nhiều sao địa chỉ của nơi nó bắt đầu, 1523 01:11:14,030 --> 01:11:16,160 và đó là những gì được lưu trữ trong con trỏ, hoặc ptr. 1524 01:11:16,160 --> 01:11:17,510 1525 01:11:17,510 --> 01:11:18,010 Tốt. 1526 01:11:18,010 --> 01:11:18,742 1527 01:11:18,742 --> 01:11:21,700 Các bạn trông ít bối rối hơn so với hầu hết các người khi nói về con trỏ, 1528 01:11:21,700 --> 01:11:23,670 vì vậy tôi cảm thấy khá tốt ngay bây giờ. 1529 01:11:23,670 --> 01:11:24,520 >> Được rồi. 1530 01:11:24,520 --> 01:11:27,960 Như mọi khi, các bạn nên có tất cả nhận lớp pset2 của bạn bây giờ. 1531 01:11:27,960 --> 01:11:32,769 Tôi biết đã có một số rung rinh điều mà nó nói, công thức không hợp lệ 1532 01:11:32,769 --> 01:11:33,310 hoặc một cái gì đó. 1533 01:11:33,310 --> 01:11:36,166 Nếu bạn nhận được rằng, tất cả các điểm số của bạn là hợp lệ về phía tôi. 1534 01:11:36,166 --> 01:11:38,040 Vì vậy, tôi có thể gửi cho bạn ảnh chụp màn hình của điểm số của bạn. 1535 01:11:38,040 --> 01:11:39,011 1536 01:11:39,011 --> 01:11:41,760 Chỉ cần cho tôi biết là tốt nếu bạn thiếu bất kỳ lớp hoặc một cái gì đó 1537 01:11:41,760 --> 01:11:43,060 dường như không có ý nghĩa. 1538 01:11:43,060 --> 01:11:43,720 Hãy đến với tôi. 1539 01:11:43,720 --> 01:11:44,830 1540 01:11:44,830 --> 01:11:48,830 >> Tôi đã siêu tự hào về bạn kẻ đã có, vì vậy giữ cho nó lên. 1541 01:11:48,830 --> 01:11:50,640 Và có một phần còn lại tốt trong tuần của bạn. 1542 01:11:50,640 --> 01:11:53,440 Tôi chắc rằng tôi sẽ thấy một số của bạn vào giờ hành chính. 1543 01:11:53,440 --> 01:11:55,414