עבור לתוכן
View in the app

A better way to browse. Learn more.

HWzone

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

למה מערך בשפת C מתחיל ב-0?

Featured Replies

פורסם

בדקתי בגוגל ויש המון תשובות שונות ולא מובנות ואני עדיין לא מבין למה זה מתחיל ב0 ולא ב 1

אשמח לקבל תשובה.

פורסם

אני מניח שזה בגלל שאפס זאת הספרה הראשונה

פורסם

אין תשובה לשאלה הזאת. בכל השפות זה ככה.

פורסם

בשפת מחשבים, תמיד מתחילים באפס.

אשאל אותך אחרת, למה אתה מתחיל מ-1? הרי אם תסתכל על הספרה 10, שים לב מאיפה התחלת... מאפס.

פורסם

אין תשובה לשאלה הזאת. בכל השפות זה ככה.

כמעט בכל השפות :) (ב-VB מתחילים מ-1 כברירת מחדל).

ב-C דווקא יש לזה הסבר די פשוט. מערך הוא פשוט סדרה של משתנים שיושבים באופן רציף בזכרון. המשתנה שמחזיק את המערך הוא בעצם מצביע לאיבר הראשון בסדרה הזו (כידוע, ב-C מערכים ומצביעים הם שקולים במידה מסויימת). אם a הוא מערך, אז גישה ל-[a[j שקולה ל-(a+j)*, כלומר "קח את a, התקדם j צעדים והחזר את מה שיושב שם בזכרון". לכן גישה לתא הראשון במערך מתבצעת ע"י "התקדם 0 צעדים", ולכן [a[0 הוא התא הראשון במערך.

פורסם

מערך בc הוא בלוק זיכרון מכתובת מסויימת ובגודל מסויים, כשכל אינדקס מציין הזזה בגודל האלמנט של המערך.

אינדקס 0 אומר שנמצאים בתחילת הבלוק, ולכן אין צורך ב offset מתחילת הבלוק.

לצורך העניין,

אם נגדיר

int[5] a

אז שני הביטויים הבאים שקולים:

c=a[3]

ו

c=*(a+2*sizeof(int))

יכול להיות שיש לי טעויות סינטקטיות, אבל זה העיקרון

פורסם
  • מחבר

הבנתי!

תודה על ההסבר.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.