WEBVTT

00:00.120 --> 00:02.850
تسمح لغة C ++ بإعلان ديناميكي عن المتغيرات.

00:02.860 --> 00:06.910
دعونا نفهم ما هي فائدة السماح بالإعلان الديناميكي.

00:06.990 --> 00:11.490
نرى نحن نعلم كيف تبدو الذاكرة ، سيتم تقسيم الذاكرة إلى ثلاثة أقسام ويستخدمها

00:11.490 --> 00:12.620
البرنامج.

00:12.720 --> 00:15.660
هذا هو المكان الذي يوجد فيه البرنامج نفسه.

00:15.660 --> 00:20.020
لنفترض أنها وظيفة رئيسية ، سيكون رمز الجهاز موجودًا هنا. وهنا داخل المكدس ، سيتم

00:20.430 --> 00:25.290
إنشاء ذاكرة للمتغيرات أثناء تنفيذ البرنامج.

00:25.780 --> 00:27.830
دعونا نرى أن لدي وظيفة رئيسية هنا.

00:27.900 --> 00:34.800
إذا كنت أعلن عن بعض المتغيرات ABC من النوع Integer ، افترض أن العدد الصحيح يأخذ 2 بايت ، ثم 2

00:34.890 --> 00:40.330
بايت لـ A يتم إعطاؤها داخل المكدس ، ثم يتم إعطاء 2 بايت لـ B و 2 بايت لـ C.

00:40.560 --> 00:44.610
إذاً هذه الكتلة الكلية للذاكرة سأضع شريطًا هنا لإظهار أن هذه الذاكرة تنتمي إلى الوظيفة

00:44.610 --> 00:45.170
الرئيسية.

00:45.180 --> 00:50.050
لذلك يسمى هذا رمز تنشيط الوظيفة الرئيسية حيث يشغل إجمالي ستة بايت من

00:50.040 --> 00:50.760
الذاكرة.

00:50.810 --> 00:56.820
لنفترض الآن أن لديك بعض العبارات الشرطية وداخلها إذا كنت بحاجة إلى متغير M ، فبدلاً من التصريح

00:56.820 --> 01:02.610
عن متغير m هنا نفسه إذا أعلنته هنا أنه سيشغل الذاكرة هنا بجوار هذا المتغير داخل المكدس

01:02.620 --> 01:08.640
ولكن بدلاً من التصريح هنا إذا يمكنك الخروج من الداخل إذا كان هناك بيان موجود داخل هذه الكتلة

01:08.640 --> 01:13.950
بعد ذلك إذا لم تكن بحاجة إليه ، فبدلاً من ذلك ، سأعلن ذلك هنا.

01:13.950 --> 01:19.710
إذن ، ما يحدث بمجرد دخولها في هذه العبارة الشرطية ، ستخصص الذاكرة لـ M وبمجرد انتهاء

01:19.710 --> 01:27.480
الكتلة ، تختفي هذه الذاكرة ونفترض هنا مرة أخرى أن لديك جملة أخرى إذا كانت عبارة إذا كانت هناك جملة ، فستحتاج

01:27.810 --> 01:33.030
داخل هذا مرة أخرى إلى متغير واحد وهو X هذا مؤقتًا داخل هذه الكتلة ثم مرة أخرى

01:33.030 --> 01:35.520
اثنين بايت من الذكريات.

01:35.520 --> 01:42.450
يتم تحديد مكان الذكريات نفسها واستخدامها لمتغير X آخر وسيكون هذا X موجودًا في الذاكرة

01:42.450 --> 01:44.990
طالما كان هذا قيد التنفيذ.

01:45.600 --> 01:51.060
إذن هذه هي الفائدة من أن رمز التنشيط لهذه الوظيفة الرئيسية سوف ينمو ويتقلص مع

01:51.120 --> 01:57.250
تقدمك ديناميكيًا في إعلان المتغيرات وخروجها عن النطاق ، بمجرد انتهاء هذه الكتلة ، يختفي

01:57.250 --> 01:59.070
هذا M من الذاكرة.

01:59.070 --> 02:05.460
لذلك يمكن استخدام هذه الذاكرة ذات الجانب الواحد مرارًا وتكرارًا بواسطة متغيرات مختلفة بينما في لغة

02:05.460 --> 02:10.110
C ، يجب الإعلان عن جميع المتغيرات فقط في البداية وما إذا كنت تستخدمها في البرنامج

02:10.110 --> 02:11.280
أم لا.

02:11.310 --> 02:17.970
لذلك قد لا تكون بعض المتغيرات مفيدة للبرنامج ولكنها ستشغل مساحة الذاكرة

02:17.970 --> 02:23.650
لذلك كان هذا هو عيب برمجة C ولكن في C ++ يمكنك التصريح متى طلبت.

02:24.190 --> 02:29.360
الآن هناك شيء مثير للاهتمام سأريكم رؤيته في بعض الأحيان نحتاج إلى متغير ، دعنا

02:29.360 --> 02:35.280
نقول k ولهذا سنقوم بتعيين بعض التعبير عن النتيجة ولدينا الشرط بناءً على هذا k أقل من شيء

02:35.280 --> 02:39.700
، دعنا نقول A لنفترض أنه يتعين علينا اكتب البيان مثل هذا.

02:39.750 --> 02:45.480
الآن هذا k يكون مفيدًا فقط إذا ولكن يجب أن أعلن عنه قبل ثم تعيين نتيجة معينة

02:45.480 --> 02:46.620
للتعبير.

02:46.680 --> 02:47.940
لذلك علي أن أعلن ذلك في الخارج.

02:47.940 --> 02:52.320
بمجرد أن أعلن خارجها يكون هناك من خلال الوظيفة الرئيسية.

02:52.320 --> 02:56.070
أريد أن يقتصر نطاق هذا المتغير أيضًا على هذه الكتلة.

02:56.070 --> 02:59.560
أريد إزالة هذا من الذاكرة بمجرد انتهاء هذا.

02:59.760 --> 03:02.400
فكيف يمكننا فعل هذا.

03:02.400 --> 03:11.700
أستطيع أن أكتب نفس الشيء مثل هذا العدد الصحيح الذي أعطاه k تعبيرًا ما ثم K أقل من A. يمكنني إعلان المتغير هنا أيضًا

03:11.700 --> 03:14.390
داخل الكتلة.

03:14.430 --> 03:20.910
هذا هو المستقبل الجديد المسموح به في C ++ الموجود في الإصدار 17 من C ++ 17.

03:20.910 --> 03:26.310
هذا مسموح به حتى داخل الحالة الشرطية عندما يمكنك إعلان نصف إعلان متبوعًا

03:26.310 --> 03:33.050
بأنه يمكنك الحصول على الشرط ، لذا فإن عمر هذا k varteable سيقتصر فقط على هذه الكتلة بمجرد انتهاء

03:33.050 --> 03:34.220
الكتلة.

03:34.260 --> 03:40.880
ستتم إزالة هذا من الذاكرة إذا افترضنا أنه تم الإعلان عنه هنا ، فسوف يختفي بمجرد انتهاء الكتلة.

03:40.890 --> 03:46.660
الآن هناك شيء آخر شائع جدًا في برامج C ++ هو أنه داخل حلقة for إذا كنت بحاجة إلى عداد

03:46.680 --> 03:48.750
، فسيتم الإعلان عن العداد.

03:48.750 --> 03:58.290
هنا ، أنا أقل من حوالي 10 أنا زائد ، نكتب إعلانًا عن هذا أنا هنا فقط ، وبالتالي سأبقى

03:58.740 --> 04:01.410
في الذاكرة طوال هذا.

04:01.620 --> 04:07.350
بمجرد الخروج من for وحاولت عرض هذا ، فإنه متغير غير محدد.

04:08.530 --> 04:14.790
لذلك هذا هو الشيء المشترك الموجود. لذلك يُفضل استخدام الذاكرة بشكل أفضل حتى تتمكن

04:14.790 --> 04:22.740
من كتابة جزء فعال من التعليمات البرمجية باستخدام C ++ حتى نتمكن من استخدام الذاكرة بكفاءة في C ++ بمساعدة الإعلانات

04:22.740 --> 04:23.910
الديناميكية.
