שלום לכולם - שאלה ב - c אשמח לעזרה

שלום לכולם - שאלה ב - c אשמח לעזרה

יש לי את התכנית הבאה : #include <stdio.h> #include <conio.h> int x = 3; void a (int x) { x = 5; printf ("\n\rThe value of x is: %d", x); } void b (int* x) { (*x)++; printf ("\n\rThe value of *x is: %d", *x); } void c() { x= x+2; printf ("\n\rThe value of x is: %d", x); } void main() { printf ("\n\rThe value of x is: %d", x); a (x); printf ("\n\rThe value of x after function a is: %d", x); b (&x); printf ("\n\rThe value of x after function b is: %d", x); { int x = 1; c(); printf ("\n\rThe value of x after function c is: %d", x); } } אני אשמח מאוד לדעת מהו הפתרון בכל שלב ואם אפשר עם נימוק זה ממש יעזור לי . לגבי ה - x האחרון : יש הטוענים שהוא שווה ל -1 אבל אני לא יודע אם זה נכון וגם אם כן למה ? תודה רבה לפותרים
 

vinney

Well-known member
תחת חלון כתיבת ההודעה

(או מעל, בממשק החדש) יש כפתורים "התחל קוד" ו"סיים קוד", תשתמש בהם לסמן איפה מתחיל ואיפה מסתיים הקוד, וזה ייוצג מיושר
 

generala

New member
יישרתי בשבילו....

#include <stdio.h> #include <conio.h> int x = 3; void a (int x) { x = 5; printf ("\n\rThe value of x is: %d", x); } void b (int* x) { (*x)++; printf ("\n\rThe value of *x is: %d", *x); } void c() { x= x+2; printf ("\n\rThe value of x is: %d", x); } void main() { printf ("\n\rThe value of x is: %d", x); a (x); printf ("\n\rThe value of x after function a is: %d", x); b (&x); printf ("\n\rThe value of x after function b is: %d", x); { int x = 1; c(); printf ("\n\rThe value of x after function c is: %d", x); } }​
 
אתה יכול להריץ את התכנית ולראות מה הפלט

בעקרון, בסוף התכנית פותחים בלוק חדש, ומצהירים בו על משתנה מקומי לבלוק בשם X, ומציבים לו את הערך 1. הפקודה הבאה קוראת לשגרה C, שנגשת למשתנה הגלובלי לקובץ X (מקריאה מהירה: הוא מאותחל ל 3 עם טעינת התכנית, נדרס ל 5 בקריאה ל A, מוגדל ב 1 בקריאה ל B, ומוגדל ב 2 בקריאה ל C, אז אני מניח שהשגרה C מדפיסה את הערך 8), ולאחר החזרה מ C פקודת ה printf בתוך הבלוק מדפיסה את ה X המקומי של הבלוק - שאותחל ל 1 ולא שונה.
 
למעלה