السلام عليكم...
لي سؤال حول مايسمي ال String literals أو constants في السي:
شاهد هذه المثال و الناتج الخاص به:
//java_like_string_init.c
#include <stdio.h>
int main(void)
{
char arr[] = "ABC";
printf("%p %p\n", arr, "ABC");
char *arr_ptr = "XYZ";
printf("%p %p\n", arr_ptr, "XYZ");
return 0;
}
//result:
//0022FF74 00403000
//0040300B 0040300B1- بالنسبة عند إنشاء String من char ptr ...
هل يعني هذا أنه تم إنشاء char* يحتوي على "XYZ" بواسطة المترجم و تم حفظه في مكان ما ومن ثم تم إسناد عنوانه للمتغير arr_ptr و بذلك عندما نطلب "XYZ" فنحن نقصد ال char* المحفوظ مع المترجم؟
2- لماذا لم تعمل الميكانيكيه الموجوده في رقم 1 إن صحت مع ال char[] ؟؟