نطاق المتغيرات C




scope heap (3)

تكرار محتمل:
هل يعيد العنوان الحرفي لسلسلة من وظيفة آمنة ومحمولة؟
"ليف-تايم" من السلسلة الحرفية في C

مرحبا أنا الخلط إلى حد ما

char *func()
 {

    return "Hello";
 }

هنا "مرحبا" هو تسلسل / مجموعة من الأحرف. وهو متغير محلي ويجب أن تختفي بعيدا بمجرد عودة الدالة. ثم كيف يمكننا أن نحصل على القيمة الصحيحة؟


انها ثابتة ولها عنوان ثابت في الذاكرة.


و "Hello" هو سلسلة الحرفية، وسوف تكون موجودة لمدى عمر البرنامج. أن أقتبس الأقسام ذات الصلة من المعيار C99:

  • 6.4.5 الحرفية السلسلة

... يتم استخدام تسلسل الأحرف متعددة البايت لتهيئة صفيف من مدة التخزين الثابتة وطول يكفي فقط لاحتواء تسلسل ...

  • 6.2.4 مدة تخزين الأجسام

الكائن الذي تم تعريف معرفه مع ارتباط خارجي أو داخلي، أو مع ثابت محدد فئة التخزين لديه مدة تخزين ثابتة . عمرها هو التنفيذ الكامل للبرنامج ويتم تهيئة القيمة المخزنة مرة واحدة فقط، قبل بدء تشغيل البرنامج.

يجب أن تكون قيمة عودة الدالة const char* كمحاولة لتعديل سلسلة حرفية سلوك غير معرف.






local