Menu
Coddy logo textTech

תחום הנראות של משתנים

שיעור 5 מתוך 17 בקורס פונקציות ב-C של Coddy.

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

משתנים מקומיים

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

#include <stdio.h>
void message() {
   char *msg = "Coddy";
   printf("%s \n", msg);
}
int main(void) {
   char *title = "tech";
   message();
   printf("%s \n", title);
   return 0;
}

בפונקציה message מוגדר המשתנה msg. באופן דומה, הפונקציה main מגדירה את המשתנה title. המשתנים האלה אינם זמינים מחוץ לפונקציות המתאימות להם. לדוגמה, אי אפשר להשתמש במשתנה msg בפונקציה main, מכיוון שתחום ההיקף שלו מוגבל לפונקציה message.

אותו עיקרון חל על משתנים שמוגדרים בתוך בלוקי קוד מקוננים, כגון לולאות if, else, switch, case, for, while ו-do..while.

משתנים גלובליים

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

#include <stdio.h>
int a = 12;
void increment()
{
   a++;
   printf("a=%d \n", a);
}
int main(void)
{
   increment();          
   a++;
   printf("a=%d \n", a);    
    
   return 0;
}

הפלט:

a=13 
a=14 

כאן, המשתנה a גלוי לכל הפונקציות מכיוון שהוא הוצהר באופן גלובלי.

 

challenge icon

אתגר

קל

נסה להשתמש במשתנה הגלובלי:

  • הגדר משתנה גלובלי בשם <strong>gv</strong> מחוץ לכל פונקציה והקצה לו את הערך 20. 
  • שנה את הפונקציה increment כך שתשתמש במשתנה הגלובלי הזה. 
  • כתוב פונקציה חדשה decrement שמקטינה את המשתנה הגלובלי ומדפיסה את ערכו. 
  • הדפס את ערך המשתנה בפונקציה main.

הפלט אמור להיראות כך:

Global variable after increment: 21 
Global variable after decrement: 20 
Global variable in main: 20 

נסו בעצמכם

#include <stdio.h>

// הגדירו משתנה גלובלי בשם gv והקצו לו את הערך 20


// שנו את הפונקציה increment
void increment() {
   
    printf("Global variable after increment: %d \n", gv);
}

// הגדירו את הפונקציה decrement


int main(void) {
    
    increment();
    decrement();
    // הדפיסו את המשתנה 
    
    return 0;
}

כל השיעורים ביחידה פונקציות ב-C

תרגלו בעצמכם: קומפיילר C אונליין