چرا در زبان c++ آرایه ها از صفر مقداردهی می شود؟ - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

چرا در زبان c++ آرایه ها از صفر مقداردهی می شود؟

+3 امتیاز
چرا در زبان c++ آرایه ها از صفر مقداردهی می شود؟

لطفا راهنمایی کنید
سوال شده مهر 8, 1393  بوسیله ی خورشید تابان (امتیاز 36)   4 7 11
سلام، من زبانم خوب نیست لطفا برید به این آدرس http://en.wikipedia.org/wiki/Zero-based_numbering و قسمت In computer programming => origin را مطالعه کنید، در این قسمت توضیحاتی در مورد دلایل انتخاب خانه های آرایه زبان C از صفر داده شده که c++ هم از زبان برنامه نویسی c گسترش پیدا کرده.
دلیل خاصی نداره بخاطر این هست که از ابتدا C به این شکل ساخته شده . وگرنه زبان های دیگه ای مثل Lua, Fortran , ... هم وجود دارن که ایندکسشون از 1 شروع میشه .

1 پاسخ

+2 امتیاز
 
بهترین پاسخ

سلام. فرض کن یک آرایه ای به شکل زیر از نوع int تعریف کردی.

int arr[] = {6, 28,75, 2};

همچنین فرض کن خونه اول یعنی خونه ای که در آن مقدار 6 هست مکانش در حافظه در خونه 3000 باشه. چون نوع داده ای که تعریف شده از نوع int هستش یعنی هر خونه از آرایه 4 بایت فضا میگیره.

از طرفی برای به دست آوردن ایندکس یک خونه از آرایه  از فرمول زیر باید استفاده کنی

C++,آرایه

interesting location address: آدرس خونه ای که می خواهی ایندکس آونو به دست بیاری

offset location address: آدرس خونه اول آرایه هست که در مثال گفته شده آدرس خونه اول آرایه 3000 در نظر گرفته شده پس این مقدار این 3000 میشه

Size of integer هم که 4 بایت هست 

حالا اگه بخوای ایندکس مربوط به اولین خونه آرایه رو به دست بیاری می نویسی

3000-3000/4 = 0

همونطور که می بینی خونه اول چون آدرس offset آن با آدرس خودش یکی است پس مقدارش صفر شده پس ایندکس این خونه صفره.

برای خانه بعدی آدرس حافظه اش میشه 3004 پس ایندکس این خونه برابر با

3004-3000/4 = 1

و ایندکس خونه بعدی یک شده و به همین ترتیب برای مابقی خونه ها می تونی حساب کنی.

دلیل اصلی که از صفره اینه که آدرس خونه offset با خونه اول آرایه یکیه

پاسخ داده شده مهر 8, 1393 بوسیله ی Pashmak (امتیاز 644)   8 15 31
ویرایش شده دی 30, 1393 بوسیله ی haniye sarbazi
...