C++/פונקציות: הבדלים בין גרסאות בדף

תוכן שנמחק תוכן שנוסף
Ybungalobill (שיחה | תרומות)
VOID++
Ybungalobill (שיחה | תרומות)
שורה 134:
 
=== פונקציית main ===
 
כפי שנאמר כבר פעמים רבות, main גם היא פונקציה. פונקצייה זו מיוחדת ממספר בחינות, נדון בהן כאן.
 
הערך המוחזר מפונקציה main, מטרתו לסמל סיום מוצלח או שגיאה כלשהי. אפס מסמל סיום מוצלח ואילו כל מספר אחר מסמל שגיאה. הערך הזה מוחזר למערכת ההפעלה שכביכול קראה לפונקציה main. במערכות הפעלה שונות ניתן לברר בדרכים שונות מה הערך המוחזר מתוכנית זו או אחרת. לרוב המשתמש לא יודע על ערך מוחזר זה ומערכת ההפעלה אף תתעלם ממנו.
 
main, על אף שהיא מחזירה ערך, לא חייבת לכלול את הוראת return. במקרה והיא תסתיים ללא הוראה זו, מערכת ההפעלה תקבל ערך המסמל סיום מוצלח, כלומר אפס. ניתן לראות זאת כאילו המהדר מוסיף אוטומטית הוראה {{קוד בשורה|return 0;}} בסוף הפונקציה.
 
{{שקול לדלג|סיבה=נושא זה קשור [[C++/מערכים|למערכים]] [[C++/מצביעים והמשתנה המיוחס|ולמצביעים]]. ניתן להבין את הנכתב פה גם ללא ידע בנושאים אלה, אך עדיף לחזור לפה כשתלמדו אותם.
}}עד כה main לא קיבלה פרמטרים. אבל, ניתן להגדיר פונקציה זו גם עם הכותרת הבאה:
<source lang="cpp">
int main(int argc, char *argv[])
</source>
 
במקרה זה הפונקצייה תקבל שני פרמטרים שמשמשים לקבלת שורת הפקודה שאיתה הורצה התוכנית. בסביבות חלונאיות המשתמש לא מתעסק, בדרך כלל, עם שורה זו, אך עדיין שורה זו קיימת. כאשר מורצת התוכנית ניתן להעביר אליה ארגומנטים שונים שיקבעו את פעולתה. למשל ניתן להריץ את התוכנית program.exe כך (משורת הפקודה):
<div style="direction: ltr;">
program.exe --read myfile.txt
</div>
(אופן הרצת התוכנית משורת הפקודה יכול להיות שונה במערכות הפעלה שונות). בדוגמה זו, שתפעל תחת Microsoft Windows או Linux הפונקציה main תקבל את הפרמטרים הבאים:
* הפרמטר הראשון הוא מספר הארגומנטים שהועברו לתוכנית (פלוס אחד). בדוגמה זו הועברו 2 ארגומנטים, לכן argc == 3.
* הפרמטר השני הוא מערך של מחרוזות (על מערכים למד בהמשך). פשטנית: פרמטר זה מכיל את הארגומנטים שהועברו לתוכנית, בסדר שהם נכתבו. הפרמטר הראשון (מספרו אפס) הוא שם של קובץ ההרצה של התוכנית:
<div style="direction: ltr;">
argv[0]: "program.exe"
argv[1]: "--read"
argv[2]: "myfile.txt"
</div>
כאשר argv[n]&lrm; הוא האיבר במערך שמספרו n.
 
== הכרזת פונקציות ==