"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > ما هو حجم \"الفراغ\" في لغة C؟

ما هو حجم \"الفراغ\" في لغة C؟

تم النشر بتاريخ 2024-12-22
تصفح:802

What is the Size of \

سؤال: فهم الحجم غير المحدد لـ "void"

في برمجة C، تمثل الكلمة الأساسية "void" غيابًا للنوع. هذا يثير السؤال: ما هو حجم "الفراغ"؟

الإجابة:

النوع "باطل" ليس له حجم محدد في لغة C. إنه ليس نوع صالح للكائنات أو المؤشرات، لذا فإن محاولة استخدامه على هذا النحو قد تؤدي إلى خطأ في الترجمة. على وجه التحديد، العبارة:

void n;

غير صالحة لأنها تحاول الإعلان عن متغير من النوع void، وهو أمر غير مسموح به.

الامتداد: التخصيص والمؤشر الحسابي مع المؤشرات "الباطلة"

على الرغم من أن "الفراغ" ليس له حجم، إلا أنه يمكن استخدامه كنوع للمؤشرات. ومع ذلك، فإن هذه المؤشرات لا تشير إلى أي نوع أو حجم محدد للبيانات.

البيان:

void *p = malloc(sizeof(void));

results في خطأ وقت الترجمة لأن محاولة تخصيص الذاكرة لنوع "باطل" أمر غير منطقي. تتطلب الدالة malloc نوع بيانات صالحًا لتخصيص الذاكرة لها.

في دول مجلس التعاون الخليجي، يتم تقييم التعبير sizeof(void) بشكل مفاجئ إلى 1. في حين أن هذا قد يبدو أنه يعين حجمًا لـ "void"، إلا أنه مجرد تفاصيل التنفيذ التي لا ينبغي الاعتماد عليها.

بالإضافة إلى ذلك، فإن حساب المؤشر p على المؤشر "الباطل" غير محدد ويجب عدم استخدامه. وذلك لأن نوع البيانات التي يشير إليها p غير معروف، مما يجعل من المستحيل تحديد معنى زيادة المؤشر.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3