פורסם 2012 בפברואר 2513 שנים אם מישהו יוכל לעזור לי בבקשה ולומר לי למה אי אפשר לעשות בתרגיל הבא ++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);}עקרונית אני יודע בד"כ שבהתייחסות למערכים, הכוונה היא פוינטר למערך, ושניתן לקדם אותו וע"י כך בעצם "לקדם" את המערך גם כן.
פורסם 2012 בפברואר 2513 שנים לא! מערך הוא לא מצביע!הרבה אנשים מתבלבלים. אם אתה מעביר את המערך כפרמטר לפונקציה אז בעצם נשלח מצביע לאיבר הראשון.
פורסם 2012 בפברואר 2513 שנים מחבר אז ברגע שאתה מגדיר מערך כלשהו בפונקציה כלשהי (או main) הדרך היחידה לקדם אותו היא בעזרת שימוש ב index ?
פורסם 2012 בפברואר 2513 שנים מחבר אוקיי נראה לי שהבנתי אותך, לקדם התכוונתי לאיבר הבא במערך.אז בגדול אם אני מגדיר מערך בפונקציה, יש לי שתי דרכים להתקדם לאיבר הבא (נגיד ואני רוצה סתם דוגמא לעבור על כל האיברים במערך מסיבה כלשהי) :1. להשתמש ב index ולקדם את המערך לפי arr[index בלולאה עם index++2. להגדיר מצביע למערך נגיד *b שיצביע על האיבר הראשון במערך, ולקדם את b גם בלולאה לפי b++תקן אותי אם אני טועה
פורסם 2012 בפברואר 2513 שנים מצביע שמתקדם על מבנה נתונים כלשהו נקרא איטרטור.במקרה הפשוט שלך פשוט תשתמש באינדקס. אתה רץ בלולאה עבור i=0 כל עוד הוא קטן ממספר האיברים במערך ומקדם את i:int i;for (i=0;i<arraySize;++i{ do something with array[i]}
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.