خوب بلاخره یک نفر پیدا شد که جواب این سوالات رو هر چند ناقص تا حدودی بده ولی هنوز هویت اصلیش کشف نشده یک it88 پسر در دانشگاه صنعتی همدان که من نمیتونم حدس بزنم کیه
با توجه به تمام شدن زمان مسابقات ایشون حتی اگر نصف سوال هم درست جواب داده باشن برنده خواهند بود و با توجه به اینکه از بچه های خودمون هست جایزه حضوری بهش تحوبل داده خواهد شد اگر هم میتونه فعالیتش رو بیشتر کنه مدیریت یک قسمت رو بر عهده بگیره
اما جواب درست سوالات که به تدریج همینجا قرار میدم و با جواب ایشون هم مقایسه میشه
جواب سوال 1 :
ساخت ارایه ارجاعی به همان ترتیب هست که گفته شده ولی همون طور که گفتن کاربردش رو نمیدونستن که آرایه ی پویا تعریف کردند کاربرد در ارایه های با طول مشخص در قالب ها
جواب کامل
آرایهٔ ارجاعی بصورت زیر تعریف میشود:
Type (&ref_arr)[LEN] = arr;Type نوع اعضای مورد ارجاع آن و LEN هم طول آن است. مثال:
int arr[3] = {1, 2, 3};
int (&ref_arr)[3] = arr;
int ref_len = sizeof(ref_arr);
int ref_element = ref_arr[1]; کاربرد؟ در صورتی که طول آرایه در زمان کامپایل مشخص باشد (همانند آرایههای معمولی)، استفاده از این نوع مناسب است، میتوان پارامتر ورودی تابع را از این نوع تعریف کرد و توسط عملگر sizeof به اندازهٔ آن دست یافت. معمولا در صورت استفاده از templateها، کاربردیتر هستند. در غیر اینصورت، استفاده از اشارهگر برای دسترسی به آرایه و ورودی توابع مناسب است و در اینصورت باید اندازهٔ آرایه را به عنوان یک پارامتر مجزا به تابع بفرسید.
چرا نمیتوان ارجاعی به خود آرایه (reference to array) داشت؟ چون آرایهها همواره به عنوان یک اشارهگر هستند . یعنی آرایهای به نام adp که اعضای آن از نوع int باشد، در اینصورت، خود آرایه از نوع *int خواهد بود، مثال:
int adp[3] = {1, 2, 3};
int* adp_ptr = adp; پس برای ارجای به آرایه، نمیتوان نوع آن را یعنی *int را به &int تبدیل کرد (کاملاً غیر عملی). پس برای ارجاع به یک آرایه، در حقیقت باید ارجاعی به اشارهگر نوع آن داشت یعنی:
const int*& adp_ref = adp;نوع &*int را از راست به چپ اینطور بخوانید: «ارجاعی به اشارهگری از نوع int»