سلام دوستان کسی میدونه خط 4 این تکه کد چه معنی میده که جواب رو گزینه 3 کرده؟ کلا این مدل تخصیص مقدار به خانه های آرایه چه معنی داره؟ لینکی که ضمیمه کردم صورت سوال هست
index.jpghttps://s19.picofile.com/file/8433944734/index.jpg
سلام دوستان کسی میدونه خط 4 این تکه کد چه معنی میده که جواب رو گزینه 3 کرده؟ کلا این مدل تخصیص مقدار به خانه های آرایه چه معنی داره؟ لینکی که ضمیمه کردم صورت سوال هست
index.jpghttps://s19.picofile.com/file/8433944734/index.jpg
آرایه ها در حافظه به صورت ترتیبی ذخیره میشوند، بنابراین آرایه int a1[2][3] به صورت 24=( (3*2)*4 ) بایت پشت سرهم تعریف میشود
بنابراین دستور a1[1,0][1,0] به اولین آدرس آفست شروع آرایه اشاره خواهد کرد یعنی انگار دقیقا بنویسید a1[0][0]
یعنی اگر از نحو a[1,0][1,0] استفاده کنید کامپایلر دقیقا بجای اعداد مشخص شده آدرس اندیس های آرایه را محاسبه میکنه و جایگزین میکنه یعنی داریم
byte 0..4 == a1[1,0][1,0] == a1[0][0]
byte 4..8 == a1[1,0][1,1] == a1[0][1]
byte 8..12 == a1[1,0][1,2] == a1[0][2]
----------------------------
byte 12..16 == a1[1,1][1,0] == a1[1][0]
byte 16..20 == a1[1,1][1,1] == a1[1][1]
byte 20..24 == a1[1,1][1,2] == a1[1][2]
البته این نحو هم هیچ تفاوت تکنیکی در برنامه نخواهد داشت و کد خروجی یکسان خواهد داشت
حتی اگر اینطوری تعریف کنید ( 1+(a1+1)*)* == a1[1][1]
ویا اگر اینطوری تعریف کنید [a1+1] 2[a1] این دستور به مقدار byte 16..20 اشاره میکنه
جالبتر این هست اگر اینو بنویسید [a2]2 به آدرس آفست شروع بایت 8 اشاره میکنه یعنی یک *int
بنابراین تعریف های اینچنینی آرایه ها در زبان سی و یا سی پلاس پلاس هیچ فایده ای که ندارد، تازه باعث مبهم شدن و ناخوانا شدن برنامه ها هم میشود تعریف های اینچنینی فقط برای موارد آموزشی کاربرد دارند که اونهم مشخص نیست برای چی هست؟ گمراه کردن دانشجو ویا خفن جلوه دادن زبان برنامه نویسی؟
به هرحال استفاده ار نحوهای استاندارد بیشترین کاربردی می باشد.
ممنونم از پاسخگوییتون
ولی ببخشید دوست گرامی با این توضیحاتی که شما فرمودین a[1,0][1,0] مساوی هست با a[0][0] و از آنجایی که a[0][0] در تعاریف برنامه برابر 0 است بنابراین میبایست گزینه 1 پاسخ صحیح بشد درحالی که گزینه 3 پاسخ صحیح شده خود کامپایلر نیز عدد 9 را در خروجی بر میگرداند.
اکی دوست خوبم کاملا متوجه شدم ممنونم از توضیحات جامع شما