06-12-2009, 15:08
|
|
|
חבר מתאריך: 30.07.05
הודעות: 949
|
|
זה לא ממש נכון...
אתה יכול לכתוב שם גם פונקציה.. זה אפילו לא חייב להיות משתנה...
לדוגמא:
קוד:
for (Node *iterator = list->head; iterator != NULL; iterator = iterator->next)
זה ביטוי חוקי לחלוטין (ודי סטנדרטי כשעובדים עם רשימות מקושרות)
מה שכתב RP. נכון לחלוטין, מדובר ב-3 ביטויים המבוצעים ב-3 מקומות שונים:
בפעם הראשונה שמגיעים ללולאת ה-for מתבצע מה שכתוב ב-initialization_expression. זה יכול להיות אתחול משתנים, הגדרת משתנים, ביטוי ריק* או הפעלה של פונקציה - כל ביטוי חוקי בשפת C
קוד:
//*
int i=0;
for (; i < ITERATIONS; ++i)
לפני הכניסה לגוף הלולאה משוערך הביטוי loop_condition, שגם הוא יכול להיות כל ביטוי חוקי בשפת C ונכנסים ללולאה אם ורק אם הביטוי מקבל ערך true (שונה מ-0)
בסוף גוף הלולאה מתבצע increment_expression ששוב, יכול להיות כל ביטוי חוקי בשפת C, יכול להיות ריק, ויכול להיות מורכב:
קוד:
//Count list size:
Node *iterator;
int len;
for (iterator = list->head, len = 0; iterator != NULL; iterator = iterator->next, ++len)
גם זה, ביטוי חוקי (אופרטור פסיק מייצג שהביטויים המופרדים בו צריכים להיות מחושבים במקביל [אם כי בפועל זה לא באמת מפעיל חוטים נפרדים עבורם. השימוש הוא בעיקר למקרים כמו שהצגתי בדוגמא למעלה])
_____________________________________
חתימתכם הוסרה כיוון שלא עמדה בחוקי האתר. לפרטים נוספים לחצו כאן. תוכלו לקבל עזרה להתאמת החתימה לחוקים בפורום חתימות וצלמיות.
|