עבור לתוכן

עזרה ב C

Featured Replies

פורסם

אם מישהו יוכל לעזור לי בבקשה ולומר לי למה אי אפשר לעשות בתרגיל הבא ++a

[size=78%]#include <stdio.h>[/size]
void secret()
{
int a[] = {1,2,3,4,5};
int b, x = 0;
for (b=5 ; b>0; b--)
{
x += *a;
a++;
}
printf("%d\n",x);
}

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

פורסם

לא! מערך הוא לא מצביע!

הרבה אנשים מתבלבלים. אם אתה מעביר את המערך כפרמטר לפונקציה אז בעצם נשלח מצביע לאיבר הראשון.

פורסם
  • מחבר

אז ברגע שאתה מגדיר מערך כלשהו בפונקציה כלשהי (או main) הדרך היחידה לקדם אותו היא בעזרת שימוש ב index ?

פורסם
  • מחבר

אוקיי נראה לי שהבנתי אותך, לקדם התכוונתי לאיבר הבא במערך.

אז בגדול אם אני מגדיר מערך בפונקציה, יש לי שתי דרכים להתקדם לאיבר הבא (נגיד ואני רוצה סתם דוגמא לעבור על כל האיברים במערך מסיבה כלשהי) :

1. להשתמש ב index ולקדם את המערך לפי arr[index בלולאה עם index++

2. להגדיר מצביע למערך נגיד *b שיצביע על האיבר הראשון במערך, ולקדם את b גם בלולאה לפי b++

תקן אותי אם אני טועה

פורסם

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

במקרה הפשוט שלך פשוט תשתמש באינדקס. אתה רץ בלולאה עבור i=0 כל עוד הוא קטן ממספר האיברים במערך ומקדם את i:

int i;
for (i=0;i<arraySize;++i
{
do something with array[i]
}

פורסם

ערוך בבקשה את הכותרת כך שתכיל את תמצית השאלה.

ארכיון

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

דיונים חדשים