פורסם 2012 ביוני 713 שנים בדקתי בגוגל ויש המון תשובות שונות ולא מובנות ואני עדיין לא מבין למה זה מתחיל ב0 ולא ב 1אשמח לקבל תשובה.
פורסם 2012 ביוני 713 שנים בשפת מחשבים, תמיד מתחילים באפס.אשאל אותך אחרת, למה אתה מתחיל מ-1? הרי אם תסתכל על הספרה 10, שים לב מאיפה התחלת... מאפס.
פורסם 2012 ביוני 713 שנים אין תשובה לשאלה הזאת. בכל השפות זה ככה. כמעט בכל השפות (ב-VB מתחילים מ-1 כברירת מחדל). ב-C דווקא יש לזה הסבר די פשוט. מערך הוא פשוט סדרה של משתנים שיושבים באופן רציף בזכרון. המשתנה שמחזיק את המערך הוא בעצם מצביע לאיבר הראשון בסדרה הזו (כידוע, ב-C מערכים ומצביעים הם שקולים במידה מסויימת). אם a הוא מערך, אז גישה ל-[a[j שקולה ל-(a+j)*, כלומר "קח את a, התקדם j צעדים והחזר את מה שיושב שם בזכרון". לכן גישה לתא הראשון במערך מתבצעת ע"י "התקדם 0 צעדים", ולכן [a[0 הוא התא הראשון במערך.
פורסם 2012 ביוני 713 שנים מערך בc הוא בלוק זיכרון מכתובת מסויימת ובגודל מסויים, כשכל אינדקס מציין הזזה בגודל האלמנט של המערך.אינדקס 0 אומר שנמצאים בתחילת הבלוק, ולכן אין צורך ב offset מתחילת הבלוק.לצורך העניין,אם נגדירint[5] aאז שני הביטויים הבאים שקולים:c=a[3]וc=*(a+2*sizeof(int))יכול להיות שיש לי טעויות סינטקטיות, אבל זה העיקרון
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.