עבור לתוכן

משתנים מקומיים ב-c

Featured Replies

פורסם

שלום.

אני לא לומד מתוך ספר.

ואם אפשר הסבר לפי קטע קוד הזה.

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

הוא נפרד ונבדל ממשתנים אחרים במקום אחר בתוכנית.

מה הכוונה?.

ולמה התוצאה הזאת.

After calling demo(), x = 1 and y = 2.  

לא מודפסת לפני זאת?

Within demo(), x = 88 and y = 99.

1:   /* Demonstrates local variables. */2:
3: #include <stdio.h>
4:
5: int x = 1, y = 2;
6:
7: void demo(void);
8:
9: main()
10: {
11: printf("\nBefore calling demo(), x = %d and y = %d.", x, y);
12: demo();
13: printf("\nAfter calling demo(), x = %d and y = %d\n.", x, y);
14:
15: return 0;
16: }
17:
18: void demo(void)
19: {
20: /* Declare and initialize two local variables. */
21:
22: int x = 88, y = 99;
23:
24: /* Display their values. */
25:
26: printf("\nWithin demo(), x = %d and y = %d.", x, y);
27: }
Before calling demo(), x = 1 and y = 2.
Within demo(), x = 88 and y = 99. After calling demo(), x = 1 and y = 2

פורסם

זה אומר שהמשתנה הזה הוא מיוחד וקיים רק בתוך הפונקציה, וכל התייחסות ל-x ול-y בתוך הפונקציה מתייחסים רק למשתנים האלו שהוגדרו בתוך הפונקציה, ולא למשתנים הגלובליים x ו-y שהוגדרו מחוץ לה. בעצם יש לך פה 4 משתנים שונים - x ו-y הגלובליים, ו-x ו-y שהוגדרו בתוך הפונקציה, ואין קשר ביניהם פרט לעובדה שהם חולקים אותם שמות.

ולשאלתך השנייה, למה שזה יודפס קודם?

פורסם
  • מחבר
זה אומר שהמשתנה הזה הוא מיוחד וקיים רק בתוך הפונקציה, וכל התייחסות ל-x ול-y בתוך הפונקציה מתייחסים רק למשתנים האלו שהוגדרו בתוך הפונקציה, ולא למשתנים הגלובליים x ו-y שהוגדרו מחוץ לה. בעצם יש לך פה 4 משתנים שונים - x ו-y הגלובליים, ו-x ו-y שהוגדרו בתוך הפונקציה, ואין קשר ביניהם פרט לעובדה שהם חולקים אותם שמות.

ולשאלתך השנייה, למה שזה יודפס קודם?

מה זאת אומרת מתייחסים רק למשתנים בתוך פונקציה?

פורסם
  • מחבר
אני לא יודע איך לומר את זה בעברית יותר ברורה.

למשתנים מקומיים ב-c יש אותם כללים כמו בשפות אחרות.לדוגמא c# לינוקס ו-php?

פורסם

אני אנסה להסביר שוב.

בפעם הראשונה והאחרונה יודפסו 1 ו2 כי אתה נמצא בקטע הראשי MAIN.

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

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

אפשר לחשוב על זה שאתה קורה לפונקציה נפתח חלון פרטי שבתוכו קורים דברים כמו הגדרה של X וY ולאחר הגדרה זו כל פעם שתרצה את X או את Y הוא יסתכל בהגדרה בתוך החלון הזה ולכן זאת הסיבה שהוא ידפיס 88 ו99.

פורסם
למשתנים מקומיים ב-c יש אותם כללים כמו בשפות אחרות.לדוגמא c# לינוקס ו-php?

כן, זה אותו דבר כמו ב-#C וב-php (לינוקס זו לא שפת תכנות). יש שפות שבהן הכללים האלה שונים.

ארכיון

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

דיונים חדשים