تسمح لغة C ++ بإعلان ديناميكي عن المتغيرات.
دعونا نفهم ما هي فائدة السماح بالإعلان الديناميكي.
نرى نحن نعلم كيف تبدو الذاكرة ، سيتم تقسيم الذاكرة إلى ثلاثة أقسام ويستخدمها
البرنامج.
هذا هو المكان الذي يوجد فيه البرنامج نفسه.
لنفترض أنها وظيفة رئيسية ، سيكون رمز الجهاز موجودًا هنا. وهنا داخل المكدس ، سيتم
إنشاء ذاكرة للمتغيرات أثناء تنفيذ البرنامج.
دعونا نرى أن لدي وظيفة رئيسية هنا.
إذا كنت أعلن عن بعض المتغيرات ABC من النوع Integer ، افترض أن العدد الصحيح يأخذ 2 بايت ، ثم 2
بايت لـ A يتم إعطاؤها داخل المكدس ، ثم يتم إعطاء 2 بايت لـ B و 2 بايت لـ C.
إذاً هذه الكتلة الكلية للذاكرة سأضع شريطًا هنا لإظهار أن هذه الذاكرة تنتمي إلى الوظيفة
الرئيسية.
لذلك يسمى هذا رمز تنشيط الوظيفة الرئيسية حيث يشغل إجمالي ستة بايت من
الذاكرة.
لنفترض الآن أن لديك بعض العبارات الشرطية وداخلها إذا كنت بحاجة إلى متغير M ، فبدلاً من التصريح
عن متغير m هنا نفسه إذا أعلنته هنا أنه سيشغل الذاكرة هنا بجوار هذا المتغير داخل المكدس
ولكن بدلاً من التصريح هنا إذا يمكنك الخروج من الداخل إذا كان هناك بيان موجود داخل هذه الكتلة
بعد ذلك إذا لم تكن بحاجة إليه ، فبدلاً من ذلك ، سأعلن ذلك هنا.
إذن ، ما يحدث بمجرد دخولها في هذه العبارة الشرطية ، ستخصص الذاكرة لـ M وبمجرد انتهاء
الكتلة ، تختفي هذه الذاكرة ونفترض هنا مرة أخرى أن لديك جملة أخرى إذا كانت عبارة إذا كانت هناك جملة ، فستحتاج
داخل هذا مرة أخرى إلى متغير واحد وهو X هذا مؤقتًا داخل هذه الكتلة ثم مرة أخرى
اثنين بايت من الذكريات.
يتم تحديد مكان الذكريات نفسها واستخدامها لمتغير X آخر وسيكون هذا X موجودًا في الذاكرة
طالما كان هذا قيد التنفيذ.
إذن هذه هي الفائدة من أن رمز التنشيط لهذه الوظيفة الرئيسية سوف ينمو ويتقلص مع
تقدمك ديناميكيًا في إعلان المتغيرات وخروجها عن النطاق ، بمجرد انتهاء هذه الكتلة ، يختفي
هذا M من الذاكرة.
لذلك يمكن استخدام هذه الذاكرة ذات الجانب الواحد مرارًا وتكرارًا بواسطة متغيرات مختلفة بينما في لغة
C ، يجب الإعلان عن جميع المتغيرات فقط في البداية وما إذا كنت تستخدمها في البرنامج
أم لا.
لذلك قد لا تكون بعض المتغيرات مفيدة للبرنامج ولكنها ستشغل مساحة الذاكرة
لذلك كان هذا هو عيب برمجة C ولكن في C ++ يمكنك التصريح متى طلبت.
الآن هناك شيء مثير للاهتمام سأريكم رؤيته في بعض الأحيان نحتاج إلى متغير ، دعنا
نقول k ولهذا سنقوم بتعيين بعض التعبير عن النتيجة ولدينا الشرط بناءً على هذا k أقل من شيء
، دعنا نقول A لنفترض أنه يتعين علينا اكتب البيان مثل هذا.
الآن هذا k يكون مفيدًا فقط إذا ولكن يجب أن أعلن عنه قبل ثم تعيين نتيجة معينة
للتعبير.
لذلك علي أن أعلن ذلك في الخارج.
بمجرد أن أعلن خارجها يكون هناك من خلال الوظيفة الرئيسية.
أريد أن يقتصر نطاق هذا المتغير أيضًا على هذه الكتلة.
أريد إزالة هذا من الذاكرة بمجرد انتهاء هذا.
فكيف يمكننا فعل هذا.
أستطيع أن أكتب نفس الشيء مثل هذا العدد الصحيح الذي أعطاه k تعبيرًا ما ثم K أقل من A. يمكنني إعلان المتغير هنا أيضًا
داخل الكتلة.
هذا هو المستقبل الجديد المسموح به في C ++ الموجود في الإصدار 17 من C ++ 17.
هذا مسموح به حتى داخل الحالة الشرطية عندما يمكنك إعلان نصف إعلان متبوعًا
بأنه يمكنك الحصول على الشرط ، لذا فإن عمر هذا k varteable سيقتصر فقط على هذه الكتلة بمجرد انتهاء
الكتلة.
ستتم إزالة هذا من الذاكرة إذا افترضنا أنه تم الإعلان عنه هنا ، فسوف يختفي بمجرد انتهاء الكتلة.
الآن هناك شيء آخر شائع جدًا في برامج C ++ هو أنه داخل حلقة for إذا كنت بحاجة إلى عداد
، فسيتم الإعلان عن العداد.
هنا ، أنا أقل من حوالي 10 أنا زائد ، نكتب إعلانًا عن هذا أنا هنا فقط ، وبالتالي سأبقى
في الذاكرة طوال هذا.
بمجرد الخروج من for وحاولت عرض هذا ، فإنه متغير غير محدد.
لذلك هذا هو الشيء المشترك الموجود. لذلك يُفضل استخدام الذاكرة بشكل أفضل حتى تتمكن
من كتابة جزء فعال من التعليمات البرمجية باستخدام C ++ حتى نتمكن من استخدام الذاكرة بكفاءة في C ++ بمساعدة الإعلانات
الديناميكية.