المخرجات المميزة في حسابات طول وحجم السلسلة لتهيئة السلسلة المستندة إلى المؤشر والمصفوفة
فهم النتائج
عند إنشاء سلسلة قائمة على المؤشر str1 وسلسلة قائمة على المصفوفة str2 بنفس القيمة، تنتج الدالتان strlen وsizeof نتائج مختلفة. على وجه التحديد، بالنسبة للإعلانات:
char *str1 = "Sanjeev";
char str2[] = "Sanjeev";
strlen تُرجع 7 لكل من str1 وstr2 نظرًا لأنها تقيس طول تسلسل الأحرف، باستثناء الفاصل الفارغ (\0) في النهاية.
ومع ذلك، sizeof يعطي قيمًا مختلفة:
الفرق الأساسي: نوع البيانات مقابل تخصيص الذاكرة
يقيس حجم نوع البيانات، بينما يقيس strlen طول تسلسل الأحرف. في حالة str1، فهو مؤشر إلى char، لذا يُرجع sizeof حجم المؤشر. بالنسبة إلى str2، فهي عبارة عن مصفوفة من الأحرف، لذا يُرجع sizeof حجم المصفوفة بأكملها، بما في ذلك المُنهي الخالي.
نظرة أقرب
لتوضيح التمييز أفضل، ضع في اعتبارك:
char str2[8];
strncpy(str2, "Sanjeev", 7);
char *str1 = str2;
الآن، يشير كل من str1 وstr2 إلى نفس المصفوفة. قيمها strlen هي 7، لكن قيم حجمها تختلف:
يوضح هذا كيف يعتمد تقييم الحجم على بنية البيانات الأساسية.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3