﻿1
00:00:04,340 --> 00:00:05,570
‫أهلا ومرحبا.

2
00:00:05,570 --> 00:00:12,050
‫في هذه المحاضرة سوف نتعلم عن المراجع وبدائل المؤشرات ، وسنرى سبب اختلافها

3
00:00:12,050 --> 00:00:14,810
‫، ولماذا قد نرغب في استخدامها.

4
00:00:14,810 --> 00:00:16,370
‫دعونا نتعمق ونرى.

5
00:00:17,220 --> 00:00:23,200
‫بالإضافة إلى المؤشرات ، هناك مفهوم مشابه جدًا يسمى المرجع.

6
00:00:23,220 --> 00:00:28,980
‫الآن كل من المؤشرات والمراجع هي في الأساس مجرد عنوان ذاكرة.

7
00:00:28,980 --> 00:00:36,510
‫كلاهما يخزن مرجعًا حيث يمكن العثور على متغير آخر ، وبهذه الطريقة يكونان متشابهين بشكل لا

8
00:00:36,510 --> 00:00:37,200
‫يصدق.

9
00:00:37,230 --> 00:00:43,140
‫يعود الفرق بين الاثنين إلى ما إذا كان يمكن إعادة تعيينهما.

10
00:00:43,140 --> 00:00:48,650
‫في الأساس ، هل يمكنهم الإشارة إلى عنوان مختلف بعد إنشائه لأول مرة؟

11
00:00:48,660 --> 00:00:51,570
‫في حالة وجود مؤشر ، تكون الإجابة نعم.

12
00:00:51,570 --> 00:00:57,660
‫يمكنك تغيير المؤشر ليشير إلى عنوان ذاكرة جديد ، أو ممثل جديد ، أو مكون جديد متى شئت ، طالما

13
00:00:57,660 --> 00:00:59,910
‫أنه يحتوي على النوع الصحيح.

14
00:01:00,210 --> 00:01:06,390
‫من ناحية أخرى ، لا يمكن إعداد المرجع إلا مرة واحدة عند إنشائه لأول مرة للإشارة إلى متغير

15
00:01:06,390 --> 00:01:09,450
‫آخر ، ولا يمكن تغييره مرة أخرى بعد ذلك.

16
00:01:09,450 --> 00:01:16,260
‫وهذه ميزة أمان لأن إعادة تعيين المتغيرات يمكن أن تؤدي إلى مشاكل حيث قد تختفي هذه

17
00:01:16,260 --> 00:01:21,480
‫المتغيرات أو حيث تقوم بتعيين هذا المؤشر على قيمة خالية.

18
00:01:21,510 --> 00:01:28,020
‫المؤشر الفارغ هو في الأساس مؤشر يشير إلى لا شيء ، ومحاولة القيام بأشياء باستخدام مؤشر يتم تعيينه

19
00:01:28,020 --> 00:01:35,040
‫على لا شيء يمكن أن يؤدي في الواقع إلى تعطل محركك ، وهي ليست نتيجة مثالية مع المراجع لأنه يتعين عليك منحهم

20
00:01:35,040 --> 00:01:37,410
‫قيمة عندما قم بإنشائها.

21
00:01:37,560 --> 00:01:41,730
‫لا يمكن أن تكون فارغة ، لذلك لا يمكنك الحصول على هذه الأعطال الفارغة في المؤشر.

22
00:01:41,940 --> 00:01:45,660
‫لذلك دعونا نبدأ في إلقاء نظرة على بعض بناء الجملة المتضمن.

23
00:01:45,660 --> 00:01:50,880
‫لذلك عند الوصول إلى المحتوى باستخدام مؤشر ، يجب عليك استخدام بعض القواعد الخاصة.

24
00:01:50,880 --> 00:01:55,890
‫يجب عليك وضع هذه النجمة أمام المؤشر للتأكد من حصولك على القيمة في المؤشر ، وليس

25
00:01:55,890 --> 00:02:01,200
‫عنوان الذاكرة مع المراجع لأنك لا تحتاج حقًا إلى الحصول على عنوان الذاكرة.

26
00:02:01,200 --> 00:02:06,240
‫يمكنك فقط استخدام المتغير كما لو كان المتغير الذي يشير إليه.

27
00:02:06,240 --> 00:02:08,460
‫ليس عليك استخدام أي بناء جملة خاص.

28
00:02:08,820 --> 00:02:15,390
‫يوجد الآن الوصول إلى العنوان ، لذلك باستخدام المؤشرات ، يمكنك الحصول على العنوان تلقائيًا.

29
00:02:15,390 --> 00:02:18,750
‫عند استخدام المتغير مع مرجع ، يجب عليك استخدام صيغة خاصة.

30
00:02:18,750 --> 00:02:24,480
‫للقيام بذلك ، يجب عليك استخدام عنوان المشغل وسيحصل بشكل أساسي على نفس العنوان

31
00:02:24,480 --> 00:02:26,670
‫مثل المتغير الأصلي.

32
00:02:27,210 --> 00:02:30,720
‫ثم هناك تغيير العنوان بمؤشر.

33
00:02:30,720 --> 00:02:35,850
‫لقد رأينا أنه يمكنك تعيين العنوان واستخدام عنوان المشغل للقيام بذلك مع المراجع.

34
00:02:35,850 --> 00:02:38,070
‫هذا غير مسموح به ، لذلك لا توجد صيغة له.

35
00:02:38,070 --> 00:02:43,860
‫وأخيرًا ، ماذا لو أردنا تغيير القيمة التي نشير إليها ، ليس العنوان ، ولكن القيمة الفعلية

36
00:02:43,860 --> 00:02:46,200
‫المخزنة في ذلك العنوان؟

37
00:02:46,200 --> 00:02:50,740
‫حسنًا ، باستخدام المؤشرات ، يجب عليك مرة أخرى استخدام بعض القواعد الخاصة.

38
00:02:50,740 --> 00:02:53,280
‫علينا أن نضع تلك النجمة ثم نخصص شيئًا ما.

39
00:02:53,280 --> 00:03:00,750
‫لذا فإن مؤشر الممثل الذي تقوم بتعيينه لمؤشر الممثل النجمي مع المراجع مرة أخرى لأنه لا يمكنك تغيير العنوان الفعلي ،

40
00:03:00,750 --> 00:03:03,270
‫فأنت لست بحاجة إلى أي بناء جملة إضافي.

41
00:03:03,270 --> 00:03:07,230
‫يمكننا حذف الصيغة الإضافية والحصول فقط على إشارة الممثل تساوي.

42
00:03:07,230 --> 00:03:12,870
‫الفاعل يعني أنك تقوم بالكتابة فوق القيمة في الموقع المشار إليه.

43
00:03:12,870 --> 00:03:14,280
‫لذلك هذا كل شيء نظري بعض الشيء.

44
00:03:14,280 --> 00:03:16,200
‫لنحصل على مثال حقيقي.

45
00:03:16,200 --> 00:03:24,540
‫لذلك إذا كان لدينا عوامة ربما كانت تخزن الضرر الذي لحق بنا في اللعبة وفي ذلك نقوم بتخزين الضرر الحالي

46
00:03:24,540 --> 00:03:26,670
‫يتم ضبطه على الصفر.

47
00:03:26,670 --> 00:03:28,350
‫لم يلحق بنا أي ضرر.

48
00:03:28,380 --> 00:03:33,900
‫الآن قد نرغب في إنشاء مرجع لهذا بدلاً من النسخ حوله ، قد نرغب في تمريره

49
00:03:33,900 --> 00:03:36,960
‫إلى دالة ، ولكن دون تغييره فعليًا.

50
00:03:36,960 --> 00:03:42,690
‫الطريقة التي يمكننا بها القيام بذلك هي الحصول على تعويم ثم وضع علامة العطف بعد التعويم.

51
00:03:42,690 --> 00:03:45,390
‫وعلامة العطف تقول أن هذا إشارة إلى عدد عشري.

52
00:03:45,390 --> 00:03:49,470
‫إنه ليس تعويمًا جديدًا بحد ذاته ، ولا يخصص أي ذاكرة عائمة.

53
00:03:49,470 --> 00:03:51,360
‫إنه يخصص فقط ذاكرة المؤشر.

54
00:03:51,510 --> 00:03:56,940
‫ولذا يمكننا أن نسمي هذا المرجع الضرر ويمكننا جعله مساويًا للضرر.

55
00:03:56,940 --> 00:04:00,360
‫لا يتعين علينا أخذ عنوان أو القيام بأي شيء من هذا القبيل.

56
00:04:00,360 --> 00:04:04,530
‫إنه يعرف تلقائيًا ، حسنًا ، هذا مرجع وهذا متغير.

57
00:04:04,530 --> 00:04:08,760
‫إذن ما تحاول القيام به هنا هو إعداد مرجع لهذا المتغير.

58
00:04:08,760 --> 00:04:15,870
‫وبالتأكيد ، إذا ذهبنا وقمت بتسجيل الدخول ، فيمكننا طباعة هذا كما لو كان مجرد تعويم عادي

59
00:04:15,870 --> 00:04:24,540
‫، لذا يمكننا أن نقول تلف القولون ثم النسبة المئوية F ومن ثم يمكننا هنا القيام فقط بطباعة الضرر المرجع.

60
00:04:24,540 --> 00:04:25,860
‫نحن لا نحتاج إلى أي بناء جملة خاص.

61
00:04:25,860 --> 00:04:28,470
‫يمكننا استخدامه كمتغير عادي.

62
00:04:28,470 --> 00:04:34,020
‫دعنا نمضي قدمًا ونبدأ التشغيل بعد التجميع ، ونلقي نظرة على سجل الإخراج لدينا ، وبالتأكيد

63
00:04:34,020 --> 00:04:37,680
‫، فإن الضرر يخرج من الصفر ، وهي القيمة التي حددناها.

64
00:04:37,680 --> 00:04:42,720
‫لكن هذا لا يثبت بالضرورة أنني لم أنسخ هذا المتغير الأصلي.

65
00:04:42,900 --> 00:04:47,040
‫لنفترض أن تحداك في محاولة تغيير القيمة ومعرفة ما سيحدث.

66
00:04:47,040 --> 00:04:54,720
‫لذا استخدم المرجع ، الإشارة إلى الضرر لتعيين قيمة جديدة ثم اطبع القيمة الأصلية بحيث تكون

67
00:04:54,720 --> 00:04:59,910
‫القيمة الأصلية بجوار القيمة المرجعية وإلقاء نظرة.

68
00:04:59,910 --> 00:05:01,770
‫هل هما متماثلان أم مختلفان؟

69
00:05:01,770 --> 00:05:05,190
‫أنت تغير المرجع فقط ، لكن هل يغير الأصل أيضًا؟

70
00:05:05,190 --> 00:05:08,760
‫لأن هذا يعني أنهما نفس المتغير.

71
00:05:08,790 --> 00:05:10,830
‫أوقف الفيديو واذهب.

72
00:05:13,910 --> 00:05:14,420
‫تمام.

73
00:05:14,420 --> 00:05:15,130
‫مرحبًا بعودتك.

74
00:05:15,140 --> 00:05:16,610
‫لذلك دعونا نعطي هذا طعنة.

75
00:05:16,640 --> 00:05:22,310
‫إذن لتغيير المرجع الآن ، سنفعل الضرر ref يساوي.

76
00:05:22,310 --> 00:05:27,320
‫وهذه المرة سأقول إننا تسببنا في خمسة أضرار ولاحظت أنني لم أضطر لاستخدام أي صيغة خاصة

77
00:05:27,320 --> 00:05:27,650
‫هنا.

78
00:05:27,650 --> 00:05:33,140
‫إنه لا يعيد تعيين المرجع لأننا أعلناه بالفعل وقمنا بإعداد مرجعه على ذلك السطر

79
00:05:33,140 --> 00:05:34,760
‫الأول عند إنشائه.

80
00:05:34,760 --> 00:05:36,290
‫لا يمكننا أن نفعل ذلك مرة أخرى.

81
00:05:36,290 --> 00:05:39,080
‫الآن يمكننا فقط تحديد القيمة.

82
00:05:39,410 --> 00:05:46,010
‫ما يمكنني فعله الآن هو أننا حصلنا على الضرر ، المرجع موجود في السجل.

83
00:05:46,040 --> 00:05:56,810
‫دعونا أيضًا نضع ضررًا ونسبة f على نفس الخيط ثم نمرر الضرر هنا أيضًا.

84
00:05:57,560 --> 00:06:00,710
‫وبعد ذلك سنقوم بالتجميع وإلقاء نظرة.

85
00:06:00,740 --> 00:06:08,540
‫دعنا نضغط على play ، نذهب إلى سجل الإخراج لدينا ، وبالتأكيد ، فإنه يطبع مرجع الضرر والضرر لأن كلاهما

86
00:06:08,540 --> 00:06:12,350
‫له القيمة الجديدة التي حددناها بقيمة خمسة.

87
00:06:12,350 --> 00:06:18,710
‫إذن ، من حيث الجوهر ، ما لدينا هنا هو متغيرين يشيران إلى نفس قطعة الذاكرة.

88
00:06:18,710 --> 00:06:22,370
‫يمكنك القول تقريبًا أنهما نفس المتغير ، لكن بأسماء مختلفة.

89
00:06:22,370 --> 00:06:28,610
‫لذلك فإن هذا له ميزة عدم الحاجة إلى نسخة ، تمامًا مثل المؤشر ، ولكن له أيضًا الكثير من الفوائد

90
00:06:28,610 --> 00:06:30,740
‫لأنه أسهل بكثير في الاستخدام.

91
00:06:30,740 --> 00:06:33,680
‫لا نحتاج إلى كل هذه البنية الإضافية كما أنها أكثر أمانًا للاستخدام.

92
00:06:33,680 --> 00:06:39,320
‫لذلك طالما أننا لا نحتاج إلى إعادة الإشارة إلى أي شيء ، فإن استخدام المراجع هو الأفضل بشكل عام.

93
00:06:39,320 --> 00:06:44,840
‫لنقم الآن بمراجعة سريعة لبعض الرموز التي نستخدمها هنا لأنها يمكن أن تكون مربكة بعض الشيء.

94
00:06:44,840 --> 00:06:47,240
‫يتم استخدامها كثيرًا في C ++.

95
00:06:47,240 --> 00:06:52,520
‫لذا ، دعنا نلقي نظرة على رموز العطف والنجمة في سياقها وما تعنيه.

96
00:06:52,790 --> 00:07:00,020
‫لذلك عندما نستخدمها ، لذلك عندما نستخدمها في تعبير ، فإليك بعض الأمثلة البرمجية.

97
00:07:00,020 --> 00:07:03,620
‫قد ترى النجمة قبل المتغير.

98
00:07:03,620 --> 00:07:06,410
‫قد ترى علامة العطف قبل المتغير.

99
00:07:06,410 --> 00:07:07,610
‫ماذا يعني هذا؟

100
00:07:08,240 --> 00:07:16,190
‫حسنًا ، مع رمز النجمة ، فإن صيغة وضعه قبل المتغير تعني أننا نحصل على المحتويات

101
00:07:16,190 --> 00:07:20,990
‫في مؤشر الفاعل الآن باستخدام علامة العطف.

102
00:07:20,990 --> 00:07:25,940
‫إذا وضعت علامة العطف أمام متغير أو أمام مرجع لمتغير ، فهذا يعني

103
00:07:25,940 --> 00:07:28,910
‫أنه يحصل على عنوان هذا المتغير.

104
00:07:28,910 --> 00:07:32,720
‫إنه الحصول على عنوان الممثل أو العنوان المشار إليه بالمرجع.

105
00:07:32,720 --> 00:07:39,440
‫الآن عندما نعلن أننا نستخدمه في نوع المتغير ، فإن النجوم وعلامة العطف لها معاني

106
00:07:39,440 --> 00:07:41,420
‫معاكسة تقريبًا.

107
00:07:41,420 --> 00:07:51,110
‫لذا فإن النجمة تعني أن هذا مؤشر لممثل جديد ، وعلامة العطف تعني أن هذه إشارة إلى

108
00:07:51,110 --> 00:07:52,550
‫ممثل جديد.

109
00:07:52,550 --> 00:07:57,140
‫لذا تذكر فقط هذا ، أن هناك مجموعة مختلفة تمامًا من المعاني ، سواء

110
00:07:57,140 --> 00:08:03,500
‫كنت تستخدمها مع متغير في تعبير أو ما إذا كنت تستخدمها في النوع الذي يوضح متغيرًا.

111
00:08:03,500 --> 00:08:08,000
‫الآن ، لن أخوض في تفاصيل كثيرة ، ولكن لإضافة إهانة للإصابة ، يمكن أن

112
00:08:08,000 --> 00:08:14,240
‫يكون لها في الواقع معاني أخرى في سياقات أخرى يمكن أن تعني علامة العطف بعض الشيء ، والنجم ، كما

113
00:08:14,240 --> 00:08:17,960
‫رأينا بالفعل ، يمكن يمكن استخدامها مع سلاسل في سجل U.

114
00:08:17,960 --> 00:08:22,610
‫إذن ، هذا ليس بالضرورة كل معاني هذين الرمزين ، لكنهما إلى حد كبير

115
00:08:22,610 --> 00:08:26,600
‫كل المعاني المهمة التي تشير إلى المؤشرات والمراجع.

116
00:08:26,630 --> 00:08:27,320
‫أشياء عظيمة.

117
00:08:27,320 --> 00:08:32,480
‫لذلك تعلمنا عن المؤشرات والمراجع وكيفية ارتباطها ببعضها البعض ، وكيف تختلف ،

118
00:08:32,480 --> 00:08:34,490
‫ولماذا قد نرغب في استخدامها.

119
00:08:34,490 --> 00:08:36,140
‫سأراك في المحاضرة القادمة.

