چرا آدرس خانه اول string با خود string متفاوت است ؟؟؟ - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

چرا آدرس خانه اول string با خود string متفاوت است ؟؟؟

+1 امتیاز

سلام به همگی.

جرا آدرس str با آدرس str[0] فرق داره .ممنون از راهنمایی شما دوستان

string str("Stringt");
cout << (void *) str<< endl;      
cout << (void *) &str[0] << endl;

 

سوال شده بهمن 23, 1392  بوسیله ی SARA (امتیاز 50)   3 9 15
دوباره تگ گذاری شد بهمن 23, 1392 بوسیله ی BlueBlade

1 پاسخ

+2 امتیاز
 
بهترین پاسخ
بخاطر اینه که string یه class هست که داخلش یه  شی از ساختار  _Alloc_hider وجود داره که داده های اصلی رشته داخل اون هستند .

برای همین آدرس خود شی string با اولین خونه ی داده های ساختار _Alloc_hider تفاوت داره .. درواقع اندازه ی کلاس string تنها 4 بایت است و اونم بخاطر اینه که توی این کلاس یه اشاره گروجود داره که به یه شی از ساختار Alloc_hider اشاره میکنه .
پاسخ داده شده بهمن 23, 1392 بوسیله ی Ali Rahbar (امتیاز 4,240)   6 16 46
انتخاب شد بهمن 25, 1392 بوسیله ی مصطفی ساتکی
...