1 00:00:00,000 --> 00:00:04,970 2 00:00:04,970 --> 00:00:07,220 DOUG LLOYD: Vì vậy, nếu bạn đã xem video của chúng tôi trên các cấu trúc, 3 00:00:07,220 --> 00:00:10,950 bạn đã biết rằng chúng tôi có các Khả năng định nghĩa kiểu dữ liệu riêng của chúng tôi. 4 00:00:10,950 --> 00:00:14,530 Nhưng nếu bạn có cấu trúc được sử dụng, bạn có biết mà đôi khi sử dụng những loại dữ liệu 5 00:00:14,530 --> 00:00:16,446 thực sự có thể là một chút rườm rà vì chúng tôi 6 00:00:16,446 --> 00:00:19,210 phải sử dụng các từ khóa struct khi chúng tôi đang làm việc với them-- 7 00:00:19,210 --> 00:00:21,257 struct xe hoặc struct sinh viên. 8 00:00:21,257 --> 00:00:23,090 Đó là rất nhiều để gõ nếu chúng ta chỉ muốn có 9 00:00:23,090 --> 00:00:24,830 một cái gì đó đơn giản, giống như một cấu trúc. 10 00:00:24,830 --> 00:00:26,390 Chúng tôi muốn have-- chúng ta muốn có thể làm việc với những thứ 11 00:00:26,390 --> 00:00:29,350 một chút cách nhanh hơn, như int hoặc char, một cái gì đó rất nhiều 12 00:00:29,350 --> 00:00:31,240 thuận tiện hơn để loại. 13 00:00:31,240 --> 00:00:33,100 >> May mắn là có một cách để làm điều này trong C, 14 00:00:33,100 --> 00:00:37,150 với một cái gì đó gọi là typedef, đó là một cách để tạo ra cách viết tắt hoặc viết lại 15 00:00:37,150 --> 00:00:38,640 tên cho các kiểu dữ liệu. 16 00:00:38,640 --> 00:00:40,720 Bạn có thể viết lại dữ liệu loại đã tồn tại, 17 00:00:40,720 --> 00:00:43,970 hoặc bạn có thể viết các kiểu dữ liệu của riêng bạn. 18 00:00:43,970 --> 00:00:46,890 >> Điều đầu tiên bạn làm là bạn định nghĩa một kiểu theo cách thông thường, 19 00:00:46,890 --> 00:00:52,271 và sau đó bạn chỉ bí danh nó thành cái gì else-- typedef cũ tên tên mới. 20 00:00:52,271 --> 00:00:53,520 Khá đơn giản, phải không? 21 00:00:53,520 --> 00:00:56,240 Vì vậy, chúng ta có thể typedef ví dụ, các dữ liệu đã tồn tại 22 00:00:56,240 --> 00:01:00,266 loại char unsigned như byte. 23 00:01:00,266 --> 00:01:03,140 Và sau đó, từ bây giờ, sau khi chúng tôi đã làm kiểu này definition-- một lần nữa, 24 00:01:03,140 --> 00:01:07,570 mà thường là có được ở đầu của dot file C của chúng tôi, hoặc trong một tập tin dot H 25 00:01:07,570 --> 00:01:10,590 riêng rẽ, chúng ta có thể chỉ sử dụng ở khắp mọi nơi cắn 26 00:01:10,590 --> 00:01:12,180 chúng tôi đã sử dụng unsigned char. 27 00:01:12,180 --> 00:01:14,300 Đó là ngắn hơn rất nhiều để gõ. 28 00:01:14,300 --> 00:01:19,280 >> Trong thư viện CS50, chúng tôi làm this-- chúng tôi typedef char sao như chuỗi. 29 00:01:19,280 --> 00:01:21,400 Bởi vì chúng ta trừu tượng đi những ý tưởng của con trỏ. 30 00:01:21,400 --> 00:01:25,072 Và thực tế là một chuỗi thực sự là một con trỏ đến character-- đầu tiên 31 00:01:25,072 --> 00:01:26,780 một mảng kí tự, bởi vì nó chỉ là 32 00:01:26,780 --> 00:01:29,863 rất khó hiểu để có được đầu của bạn xung quanh that-- nhưng trong thực tế, đó là những gì chúng tôi làm. 33 00:01:29,863 --> 00:01:35,140 Và dòng mã này thực sự tồn tại trong CS50 dot H typedef char string sao, 34 00:01:35,140 --> 00:01:39,021 chỉ để làm cho rằng một chút ít cồng kềnh để có để đối phó với. 35 00:01:39,021 --> 00:01:41,520 Đã được bạn đã nhìn thấy có thể là một chút chút về giá trị ở đây, 36 00:01:41,520 --> 00:01:44,160 nhưng typedef trở nên tuyệt vời khi kết hợp với cấu trúc, 37 00:01:44,160 --> 00:01:45,780 như tôi đã đề cập đến trước đó. 38 00:01:45,780 --> 00:01:48,550 Cấu trúc có một loại tên hai từ. 39 00:01:48,550 --> 00:01:52,020 Và do đó, họ có thể được thực sự gây phiền nhiễu tạo ra các biến kiểu đó, 40 00:01:52,020 --> 00:01:56,310 hay [không nghe được] của struct một cái gì đó, bạn đường chỉ có thể có được thực sự, thực sự dài. 41 00:01:56,310 --> 00:01:59,400 Và như vậy bạn có thể sử dụng typedef đến với cái gì ngắn hơn rất nhiều. 42 00:01:59,400 --> 00:02:04,650 >> Vì vậy, nếu tôi xác định một chiếc xe như sau, tôi có định nghĩa của tôi về một struct xe car--, 43 00:02:04,650 --> 00:02:07,230 và sau đó mở ngoặc móc, tất cả các lĩnh vực cơ cấu của tôi, 44 00:02:07,230 --> 00:02:11,030 ngoặc móc gần, bán colon-- sau khi tôi đã xác định kiểu dữ liệu của tôi, 45 00:02:11,030 --> 00:02:15,680 Tôi có thể typedef struct xe như xe gạch t. 46 00:02:15,680 --> 00:02:19,670 Và sau đó khi tôi đã làm điều đó, bây giờ mỗi thời gian tôi sẽ có cách khác sử dụng struct 47 00:02:19,670 --> 00:02:22,680 xe, tôi chỉ có thể sử dụng xe gạch t. 48 00:02:22,680 --> 00:02:26,480 Đó là ngắn hơn rất nhiều một cách để thể hiện ý tưởng này của cấu trúc này 49 00:02:26,480 --> 00:02:28,530 mà tôi vừa tạo ra. 50 00:02:28,530 --> 00:02:33,620 >> Ngoài ra, bởi vì cấu trúc được như vậy thường được sử dụng trong typedef, 51 00:02:33,620 --> 00:02:37,980 có a-- bạn thực sự có thể xác định gõ vào giữa bắt đầu và kết thúc. 52 00:02:37,980 --> 00:02:42,020 Vì vậy, cơ cấu lại là typedef thường typedef, tên cũ, tên mới, 53 00:02:42,020 --> 00:02:45,360 nơi những cái tên đã loại mà bạn đã tạo. 54 00:02:45,360 --> 00:02:49,620 Nhưng bạn thực sự có thể định nghĩa một cấu trúc ngay ở giữa của typedef 55 00:02:49,620 --> 00:02:51,760 thay vì phải xác định nó một cách riêng biệt, và sau đó 56 00:02:51,760 --> 00:02:52,990 làm một typedef của nó. 57 00:02:52,990 --> 00:02:55,780 Và đó sẽ trông giống như this-- typedef struct xe, 58 00:02:55,780 --> 00:02:59,957 ngoặc móc mở, tất cả các lĩnh vực của bạn định nghĩa, nẹp xoăn gần, xe t. 59 00:02:59,957 --> 00:03:03,290 Vì vậy, tên cũ là tất cả những thứ trong màu đỏ, bạn chỉ cần xác định cấu trúc 60 00:03:03,290 --> 00:03:05,610 và đặt tên cho nó cùng một lúc. 61 00:03:05,610 --> 00:03:07,790 Và sau đó là tên mới là xe gạch t. 62 00:03:07,790 --> 00:03:10,150 Và như vậy, nếu chúng ta bắt đầu sử dụng này trong mã, trước đây tôi 63 00:03:10,150 --> 00:03:13,279 có thể nói, struct xe mycar dấu chấm phẩy. 64 00:03:13,279 --> 00:03:14,820 Tôi cũng không phải làm điều đó nữa. 65 00:03:14,820 --> 00:03:20,265 Bây giờ mà tôi đã sử dụng typedef, tôi chỉ có thể nói xe gạch t, ​​myCar. 66 00:03:20,265 --> 00:03:22,640 Đó là ngắn hơn rất nhiều một cách để làm điều đó, và trong thực tế, nó là 67 00:03:22,640 --> 00:03:24,515 sẽ được nhiều hơn thuận tiện, đặc biệt là 68 00:03:24,515 --> 00:03:27,730 khi bạn bắt đầu sử dụng các cấu trúc nhiều hơn trong mã của bạn. 69 00:03:27,730 --> 00:03:28,810 >> Tôi Doug Lloyd. 70 00:03:28,810 --> 00:03:30,640 Đây là CS50. 71 00:03:30,640 --> 00:03:32,415