اولین بار است که به این وب‌سایت می‌آیید. راهنما را مطالعه کنید!
x
موسسه خیریه محک

شهر ریاضی بازی-ریاضی

آیا می توان آدرس یک نام مستعار (refrence) را در یک اشاره گر ذخیره کرد؟

+4 امتیاز
88 نمایش
پرسیده شده پنجشنبه ۷ دی ۱۳۹۱ در C++ توسط Ostad nistam  
بازتگ شده چهارشنبه ۲۸ فروردین ۱۳۹۲ توسط admin

1 پاسخ

+1 امتیاز

آدم حالش جا می‌آد سوال خوب می‌بینه.
آدرس یه اسم مستعار همون آدرس متغیری هست که این مستعار اونه دیگه!
یعنی


int x = 10;
int &b = x;
int *a = &b;

الان آدرس b داخل x ذخیره شده.
سوال و درست متوجه شدم؟
هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پاسخ داده شده جمعه ۸ دی ۱۳۹۱ توسط prodo  

نه دیگه!
الان آدرس x توی a ذخیره میشه
درست میگم؟

آره درسته و درست هم درسته. یعنی خوب آدرس x و مقدار b یه چیز هستن دیگه. اصولاً رفرنس بدون مقدار که نداریم. رفرنس یعنی const *

میشه یکم بیشتر توضیح بدین؟
من اصلن معنی این جمله تون رو نفمیدم:
الان آدرس b داخل x ذخیره شده.
الان b نام مستعاریست برای x
اصلن آدرس x و b ربطی به هم ندارن
اگر نوع رفرنس *const باشه هنگامی که می خواهیم به رفرنس و در واقع به خود متغییر مقدار بدیم باید باید یه آدرس بدیم و نه یه مقدار چون از نوع * هست. این تناقض نیست؟
ممنون

دقیقش رو بخوای بلی. رفرنس همون const* نیست خب.
تعریف رسمی رفرنس تو علوم کامپیوتر رو می‌شه سرچ کرد که خوب یه کم فهمیدنش درد سر داره.
به طوری غیررسمی، اگه اشاره‌گر و معادل متغیر بگیریم رفرنس معادل مقدار می‌شه.
برای همین هست که رفرنس نمی‌تونه null باشه. نمی‌تونه بدون مقداردهی اولیه (initialize) باشه و نمی‌تونه به جای دیگه اشاره کنه. چون اصلاً این چیزا در موردش بی‌معنیه.
باز غیررسمی اینه که رفرسن همون اشاره‌گره (از این نظر که آدرس نگه می‌داره) ولی خودش قابل تغییر نیست (مثل این که const باشه).

از ویکیپدیا:
It is not possible to refer directly to a reference object after it is defined; any occurrence of its name refers directly to the object it references.

ربط x و b اینه که b آدرس فیزیکی x روی حافظه‌ی ماشینه.

عالی
خیلی ممنون