עבור לתוכן
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.

מערכים ומצביעים.

Featured Replies

פורסם

אני לומד בספר שלי על מערכים ומצביעים ועל הקשר שבינהם.

וצריך לעשות תרגיל עם פונקציה.

כלומר לשלוח מערך לפונקציה כמצביע.

נגיד ככה:

void lol(int *ptr)
{
......
}

int main()
{
int mar[10];
lol(mar);
}

בספר כתוב שהאיבר הראשון במערך (0) הוא גם מצביע לכן אפשר לעשות ככה.

אבל זה כותב שגיאה.

תודה לעוזרים.

פורסם

אתה לא מספק אינפורמציה , מה השגיאה ומה אתה מנסה לעשות בתוך הפונקציה

פורסם

האיבר הראשון במערך הוא לא מצביע.

או שבספר כתוב משהו לא נכון, או שהבנת אותו לא נכון.

המערך עצמו הוא מצביע לאיבר הראשון.

מה זה אומר?

נניח שהגדרתי מערך בגודל 10:

int a[10];

אז לעשות [a[0 ולעשות a* זה בדיוק אותו דבר (המעבד לא מבדיל ביניהם).

לכן, אם יש פונקציה שמקבלת מצביע כארגומנט, אפשר לתת לה גם מערך:


int f(int *x) {
// do some stuff
}

int a[10];
f(a); // send an array as a pointer

פורסם

האיבר הראשון במערך הוא לא מצביע.

או שבספר כתוב משהו לא נכון, או שהבנת אותו לא נכון.

המערך עצמו הוא מצביע לאיבר הראשון.

מה זה אומר?

נניח שהגדרתי מערך בגודל 10:

int a[10];

אז לעשות [a[0 ולעשות a* זה בדיוק אותו דבר (המעבד לא מבדיל ביניהם).

לכן, אם יש פונקציה שמקבלת מצביע כארגומנט, אפשר לתת לה גם מערך:


int f(int *x) {
// do some stuff
}

int a[10];
f(a); // send an array as a pointer

תוסיף להסבר של שניצל שאם אתה מפעיל את האופרטור ++ על המצביע בפונקציה את למעשה מגיע לאיבר הבא במערך, אבל כמו שאמרתי לא ברור מה הבעיה שאתה נתקל בה, התקלה הכי שכיחה במקרים האלה ב- C זה שאתה פונה בעזרת המצביע לשטח בזכרון שלא הוגדר עבור התכנית שלך , כמו אם הפעלת את אופרטור הקידום ++ על המערך בן 10 איברים יותר מ- 10 פעמים ומנסה לגשת לשטח בזכרון שמעבר לגבולות שנקבעו למערך

פורסם

נכון, אבל במקרה הזה אתה לא תראה את השגיאה בשלב הקומפילציה של התכנית, אלא רק כשתריץ אותה.

בכל מקרה, Paci - מה השגיאה שהוא מוציא לך?

פורסם
  • מחבר

נראה לי שהסתדרתי.

תודה לכולם על העזרה. (:

ארכיון

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

דיונים חדשים

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.