﻿1
00:00:04,340 --> 00:00:05,570
‫Xin chào và chào mừng.

2
00:00:05,570 --> 00:00:12,050
‫Trong bài giảng này, chúng ta sẽ tìm hiểu về các tham chiếu và thay thế cho con trỏ, và chúng ta sẽ xem tại sao chúng khác

3
00:00:12,050 --> 00:00:14,810
‫nhau, tại sao chúng ta có thể muốn sử dụng chúng.

4
00:00:14,810 --> 00:00:16,370
‫Hãy đi sâu vào và xem.

5
00:00:17,220 --> 00:00:23,200
‫Vì vậy, cũng như con trỏ, có một khái niệm liên quan rất giống nhau được gọi là tham chiếu.

6
00:00:23,220 --> 00:00:28,980
‫Bây giờ cả con trỏ và tham chiếu về cơ bản chỉ là một địa chỉ bộ nhớ.

7
00:00:28,980 --> 00:00:36,510
‫Cả hai đều lưu trữ một tham chiếu đến nơi có thể tìm thấy một biến khác, và theo cách này, chúng cực kỳ

8
00:00:36,510 --> 00:00:37,200
‫giống nhau.

9
00:00:37,230 --> 00:00:43,140
‫Sự khác biệt giữa cả hai về cơ bản nằm ở việc liệu họ có thể được chỉ định lại hay không.

10
00:00:43,140 --> 00:00:48,650
‫Về cơ bản, chúng có thể trỏ đến một địa chỉ khác sau khi chúng được tạo lần đầu không?

11
00:00:48,660 --> 00:00:51,570
‫Trong trường hợp của một con trỏ, câu trả lời đó là có.

12
00:00:51,570 --> 00:00:57,660
‫Bạn có thể thay đổi một con trỏ để trỏ đến một địa chỉ bộ nhớ mới, một tác nhân mới, một thành phần mới bất cứ khi

13
00:00:57,660 --> 00:00:59,910
‫nào bạn muốn, miễn là nó có đúng kiểu.

14
00:01:00,210 --> 00:01:06,390
‫Mặt khác, một tham chiếu chỉ có thể được thiết lập một lần khi bạn tạo nó lần đầu tiên để trỏ đến

15
00:01:06,390 --> 00:01:09,450
‫một biến khác, sau đó không thể thay đổi lại nó.

16
00:01:09,450 --> 00:01:16,260
‫Và đây là một tính năng an toàn vì việc bổ nhiệm lại các biến có thể dẫn đến các vấn đề trong

17
00:01:16,260 --> 00:01:21,480
‫đó các biến đó có thể biến mất hoặc nơi bạn đặt con trỏ đó thành null.

18
00:01:21,510 --> 00:01:28,020
‫Con trỏ null về cơ bản là một con trỏ trỏ đến không có gì và cố gắng thực hiện nội dung với một con trỏ được đặt thành không

19
00:01:28,020 --> 00:01:35,040
‫có gì thực sự có thể làm hỏng động cơ của bạn, đây không phải là một kết quả lý tưởng với các tham chiếu vì bạn phải cung cấp cho chúng

20
00:01:35,040 --> 00:01:37,410
‫một giá trị khi bạn lần đầu tạo ra chúng.

21
00:01:37,560 --> 00:01:41,730
‫Chúng không thể là null, vì vậy bạn không thể gặp phải những sự cố con trỏ null này.

22
00:01:41,940 --> 00:01:45,660
‫Vì vậy, chúng ta hãy bắt đầu xem xét một số cú pháp liên quan.

23
00:01:45,660 --> 00:01:50,880
‫Vì vậy, khi bạn truy cập nội dung bằng con trỏ, bạn phải sử dụng một số cú pháp đặc biệt.

24
00:01:50,880 --> 00:01:55,890
‫Bạn phải đặt ngôi sao này trước con trỏ để đảm bảo rằng bạn đang nhận giá trị trong con trỏ,

25
00:01:55,890 --> 00:02:01,200
‫không phải địa chỉ bộ nhớ với các tham chiếu vì bạn không bao giờ thực sự cần nắm giữ địa chỉ bộ nhớ.

26
00:02:01,200 --> 00:02:06,240
‫Bạn chỉ có thể sử dụng biến như thể nó là biến mà nó trỏ đến.

27
00:02:06,240 --> 00:02:08,460
‫Bạn không phải sử dụng bất kỳ cú pháp đặc biệt nào.

28
00:02:08,820 --> 00:02:15,390
‫Bây giờ có quyền truy cập địa chỉ, vì vậy với con trỏ, bạn sẽ tự động nắm giữ địa chỉ.

29
00:02:15,390 --> 00:02:18,750
‫Khi bạn sử dụng biến với một tham chiếu, bạn phải sử dụng cú pháp đặc biệt.

30
00:02:18,750 --> 00:02:24,480
‫Để làm điều đó, bạn phải sử dụng địa chỉ của toán tử và về cơ bản nó sẽ giúp bạn

31
00:02:24,480 --> 00:02:26,670
‫có cùng địa chỉ với biến ban đầu.

32
00:02:27,210 --> 00:02:30,720
‫Và sau đó là thay đổi địa chỉ bằng một con trỏ.

33
00:02:30,720 --> 00:02:35,850
‫Chúng tôi thấy rằng bạn có thể chỉ định địa chỉ và sử dụng địa chỉ của nhà điều hành để thực hiện điều đó với các tham chiếu.

34
00:02:35,850 --> 00:02:38,070
‫Điều này không được phép, vì vậy không có cú pháp nào cho nó.

35
00:02:38,070 --> 00:02:43,860
‫Và cuối cùng, điều gì sẽ xảy ra nếu chúng ta muốn thay đổi giá trị mà chúng ta đang trỏ đến, không phải địa chỉ mà là giá

36
00:02:43,860 --> 00:02:46,200
‫trị thực tế đang được lưu trữ tại địa chỉ đó?

37
00:02:46,200 --> 00:02:50,740
‫Vâng, với các con trỏ, bạn phải sử dụng lại một số cú pháp đặc biệt.

38
00:02:50,740 --> 00:02:53,280
‫Chúng ta phải đặt ngôi sao đó và sau đó chỉ định một cái gì đó.

39
00:02:53,280 --> 00:03:00,750
‫Vì vậy, con trỏ diễn viên mà bạn gán cho con trỏ tác nhân ngôi sao với các tham chiếu một lần nữa vì bạn không thể thay đổi địa chỉ thực,

40
00:03:00,750 --> 00:03:03,270
‫bạn không cần bất kỳ cú pháp bổ sung nào.

41
00:03:03,270 --> 00:03:07,230
‫Chúng ta có thể bỏ cú pháp bổ sung và chỉ có tham chiếu diễn viên bằng.

42
00:03:07,230 --> 00:03:12,870
‫Actor có nghĩa là bạn đang ghi đè giá trị trong vị trí được trỏ tới.

43
00:03:12,870 --> 00:03:14,280
‫Vì vậy, đó là tất cả một chút lý thuyết.

44
00:03:14,280 --> 00:03:16,200
‫Hãy lấy một ví dụ thực tế.

45
00:03:16,200 --> 00:03:24,540
‫Vì vậy, nếu chúng tôi có một phao có thể lưu trữ thiệt hại gây ra cho chúng tôi trong trò chơi và trong đó chúng tôi đang lưu trữ thiệt

46
00:03:24,540 --> 00:03:26,670
‫hại hiện tại được đặt thành 0.

47
00:03:26,670 --> 00:03:28,350
‫Không ai gây ra bất kỳ thiệt hại cho chúng tôi.

48
00:03:28,380 --> 00:03:33,900
‫Bây giờ chúng ta có thể muốn tạo một tham chiếu đến điều này để thay vì sao chép xung quanh, chúng ta có thể

49
00:03:33,900 --> 00:03:36,960
‫muốn chuyển nó vào một hàm, nhưng không thực sự thay đổi nó.

50
00:03:36,960 --> 00:03:42,690
‫Cách chúng ta có thể làm là có một phao và sau đó đặt ký hiệu và sau phao.

51
00:03:42,690 --> 00:03:45,390
‫Và dấu và nói rằng đây là một tham chiếu đến một phao.

52
00:03:45,390 --> 00:03:49,470
‫Bản thân nó không phải là một float mới, không cấp phát bất kỳ bộ nhớ float nào.

53
00:03:49,470 --> 00:03:51,360
‫Nó chỉ cấp phát một bộ nhớ con trỏ.

54
00:03:51,510 --> 00:03:56,940
‫Và vì vậy chúng ta có thể gọi đây là giới thiệu sát thương và chúng ta có thể đặt nó bằng sát thương.

55
00:03:56,940 --> 00:04:00,360
‫Chúng tôi không cần phải lấy địa chỉ của hoặc làm bất cứ điều gì tương tự.

56
00:04:00,360 --> 00:04:04,530
‫Nó tự động biết, tốt, đây là một tham chiếu và đây là một biến.

57
00:04:04,530 --> 00:04:08,760
‫Vì vậy, những gì bạn đang cố gắng làm ở đây là thiết lập một tham chiếu đến biến đó.

58
00:04:08,760 --> 00:04:15,870
‫Và chắc chắn, nếu chúng tôi đi và bạn ghi lại, thì chúng tôi có thể in nó như thể nó chỉ là một phao thông thường, vì

59
00:04:15,870 --> 00:04:24,540
‫vậy chúng tôi có thể nói thiệt hại dấu hai chấm và sau đó là phần trăm F và sau đó ở đây chúng ta có thể thực hiện chỉ in thiệt hại tham chiếu.

60
00:04:24,540 --> 00:04:25,860
‫Chúng tôi không cần bất kỳ cú pháp đặc biệt nào.

61
00:04:25,860 --> 00:04:28,470
‫Chúng ta có thể sử dụng nó giống như một biến thông thường.

62
00:04:28,470 --> 00:04:34,020
‫Hãy tiếp tục và chơi sau khi biên dịch, hãy xem nhật ký đầu ra của chúng tôi và đủ chắc chắn, thiệt hại

63
00:04:34,020 --> 00:04:37,680
‫sẽ xuất hiện ở mức 0, đó là giá trị mà chúng tôi đã đặt.

64
00:04:37,680 --> 00:04:42,720
‫Nhưng điều đó không nhất thiết chứng minh rằng tôi đã không tạo bản sao của biến ban đầu đó.

65
00:04:42,900 --> 00:04:47,040
‫Vì vậy, hãy giả sử thách thức bạn thử thay đổi giá trị và xem điều gì sẽ xảy ra.

66
00:04:47,040 --> 00:04:54,720
‫Vì vậy, sử dụng tham chiếu, tham chiếu đến thiệt hại để thiết lập một giá trị mới và sau đó in ra giá trị ban

67
00:04:54,720 --> 00:04:59,910
‫đầu để giá trị ban đầu bên cạnh giá trị tham chiếu và có một cái nhìn.

68
00:04:59,910 --> 00:05:01,770
‫Chúng giống nhau hay chúng khác nhau?

69
00:05:01,770 --> 00:05:05,190
‫Bạn chỉ thay đổi tham chiếu, nhưng nó có thay đổi cả bản gốc không?

70
00:05:05,190 --> 00:05:08,760
‫Bởi vì điều đó có nghĩa là cả hai đều là cùng một biến.

71
00:05:08,790 --> 00:05:10,830
‫Tạm dừng video và tiếp tục.

72
00:05:13,910 --> 00:05:14,420
‫Được chứ.

73
00:05:14,420 --> 00:05:15,130
‫Chào mừng trở lại.

74
00:05:15,140 --> 00:05:16,610
‫Vì vậy, chúng ta hãy cho điều này một đâm.

75
00:05:16,640 --> 00:05:22,310
‫Vì vậy, để thay đổi tham chiếu bây giờ, chúng ta sẽ gây sát thương cho ref bằng.

76
00:05:22,310 --> 00:05:27,320
‫Và lần này tôi sẽ nói rằng chúng tôi đã gây ra năm thiệt hại và lưu ý rằng tôi không phải sử dụng bất kỳ cú pháp đặc biệt nào

77
00:05:27,320 --> 00:05:27,650
‫ở đây.

78
00:05:27,650 --> 00:05:33,140
‫Nó không bổ nhiệm lại tham chiếu bởi vì chúng tôi đã khai báo nó và thiết lập tham chiếu của nó trên dòng

79
00:05:33,140 --> 00:05:34,760
‫đầu tiên khi nó được tạo.

80
00:05:34,760 --> 00:05:36,290
‫Chúng tôi không thể làm điều đó một lần nữa.

81
00:05:36,290 --> 00:05:39,080
‫Vì vậy, bây giờ chúng ta chỉ có thể thiết lập giá trị.

82
00:05:39,410 --> 00:05:46,010
‫Vì vậy, những gì tôi có thể làm bây giờ là chúng tôi đã có thiệt hại, giới thiệu trong nhật ký.

83
00:05:46,040 --> 00:05:56,810
‫Hãy cũng đặt sát thương và phần trăm f vào cùng một chuỗi đó và sau đó chuyển sát thương vào đây.

84
00:05:57,560 --> 00:06:00,710
‫Và sau đó chúng tôi sẽ biên dịch và xem xét.

85
00:06:00,740 --> 00:06:08,540
‫Hãy chơi thử, vào nhật ký đầu ra của chúng tôi và chắc chắn, nó in ra ref và damage vì cả hai đều có

86
00:06:08,540 --> 00:06:12,350
‫giá trị mới mà chúng tôi đã đặt giá trị là năm.

87
00:06:12,350 --> 00:06:18,710
‫Vì vậy, về bản chất, những gì chúng ta có ở đây là hai biến trỏ đến cùng một phần bộ nhớ.

88
00:06:18,710 --> 00:06:22,370
‫Bạn gần như có thể nói rằng chúng là cùng một biến, nhưng có tên khác nhau.

89
00:06:22,370 --> 00:06:28,610
‫Vì vậy, điều này có lợi ích là không cần một bản sao, giống như một con trỏ, nhưng nó cũng có nhiều lợi ích hơn

90
00:06:28,610 --> 00:06:30,740
‫vì nó dễ sử dụng hơn rất nhiều.

91
00:06:30,740 --> 00:06:33,680
‫Chúng tôi không cần tất cả những cú pháp bổ sung đó và nó cũng an toàn hơn khi sử dụng.

92
00:06:33,680 --> 00:06:39,320
‫Vì vậy, miễn là chúng ta không cần phải trỏ lại bất cứ điều gì, sử dụng tài liệu tham khảo nói chung là tốt hơn.

93
00:06:39,320 --> 00:06:44,840
‫Bây giờ chúng ta hãy xem xét nhanh một số ký hiệu mà chúng tôi sử dụng ở đây vì chúng có thể hơi khó hiểu.

94
00:06:44,840 --> 00:06:47,240
‫Chúng được sử dụng rất nhiều trong C ++.

95
00:06:47,240 --> 00:06:52,520
‫Vì vậy, các ký hiệu và và các biểu tượng ngôi sao, chúng ta hãy xem xét chúng trong ngữ cảnh và ý nghĩa của chúng.

96
00:06:52,790 --> 00:07:00,020
‫Vì vậy, khi chúng ta đang sử dụng chúng, vì vậy khi chúng ta sử dụng chúng trong một biểu thức, đây là một số ví dụ về mã.

97
00:07:00,020 --> 00:07:03,620
‫Bạn có thể thấy dấu sao trước một biến.

98
00:07:03,620 --> 00:07:06,410
‫Bạn có thể thấy dấu và trước một biến.

99
00:07:06,410 --> 00:07:07,610
‫Điều đó có nghĩa là gì?

100
00:07:08,240 --> 00:07:16,190
‫Chà, với biểu tượng ngôi sao, cú pháp đặt nó trước biến có nghĩa là chúng ta đang nhận

101
00:07:16,190 --> 00:07:20,990
‫nội dung tại con trỏ tác nhân bằng dấu và.

102
00:07:20,990 --> 00:07:25,940
‫Nếu bạn đặt dấu và trước một biến hoặc trước một tham chiếu đến một biến, điều đó

103
00:07:25,940 --> 00:07:28,910
‫nói rằng nó đang nhận địa chỉ của biến đó.

104
00:07:28,910 --> 00:07:32,720
‫Đó là lấy địa chỉ của diễn viên hoặc địa chỉ mà tham chiếu chỉ đến.

105
00:07:32,720 --> 00:07:39,440
‫Bây giờ khi chúng ta khai báo, chúng ta đang sử dụng nó trong kiểu biến, các dấu sao và dấu và hầu như

106
00:07:39,440 --> 00:07:41,420
‫có ý nghĩa trái ngược nhau.

107
00:07:41,420 --> 00:07:51,110
‫Vì vậy, ngôi sao có nghĩa là đây là một con trỏ đến một diễn viên mới, và dấu và có nghĩa là đây là một tham chiếu đến

108
00:07:51,110 --> 00:07:52,550
‫một diễn viên mới.

109
00:07:52,550 --> 00:07:57,140
‫Vì vậy, chỉ cần nhớ điều này, rằng có một tập hợp ý nghĩa hoàn toàn khác nhau,

110
00:07:57,140 --> 00:08:03,500
‫cho dù bạn đang sử dụng chúng với một biến trong một biểu thức hay bạn đang sử dụng chúng trong kiểu khai báo một biến.

111
00:08:03,500 --> 00:08:08,000
‫Bây giờ, tôi sẽ không đi sâu vào nó quá nhiều chi tiết, nhưng để thêm vào sự xúc phạm đến thương tích,

112
00:08:08,000 --> 00:08:14,240
‫những điều này thực sự có thể có những ý nghĩa khác trong các ngữ cảnh khác mà ký hiệu và có thể có nghĩa là một chút khôn ngoan, và ngôi

113
00:08:14,240 --> 00:08:17,960
‫sao, như chúng ta đã thấy, có thể được sử dụng với các chuỗi trong nhật ký U.

114
00:08:17,960 --> 00:08:22,610
‫Vì vậy, đây không nhất thiết phải là tất cả các ý nghĩa của hai biểu tượng này, nhưng

115
00:08:22,610 --> 00:08:26,600
‫chúng là khá nhiều ý nghĩa quan trọng đề cập đến con trỏ và tham chiếu.

116
00:08:26,630 --> 00:08:27,320
‫Công cụ tuyệt vời.

117
00:08:27,320 --> 00:08:32,480
‫Vì vậy, chúng ta đã tìm hiểu về con trỏ, tham chiếu, cách chúng liên quan với nhau, chúng khác nhau như thế nào và tại

118
00:08:32,480 --> 00:08:34,490
‫sao chúng ta có thể muốn sử dụng chúng.

119
00:08:34,490 --> 00:08:36,140
‫Hẹn gặp lại các bạn trong bài giảng tiếp theo.

