Menu
Coddy logo textTech

ערך לעומת מצביע

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

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

#include <stdio.h>

void sum(int a) {
   a = a + 1;
   printf("sum function: %d\n", a);
}

int main(void) {
   int a = 10;
   sum(a);
   printf("main function: %d\n", a);
   return 0;
}

הפלט:

sum function: 11 
main function: 10 

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

#include <stdio.h>

void sum(int *a) {
   *a = *a + 1;
   printf("sum function: %d\n", *a);
}

int main(void) {
   int a = 10;
   sum(&a);
   printf("main function: %d\n", a);
   return 0;
}

מכיוון שהפונקציה מקבלת כעת מצביע בתור הפרמטר, כשקוראים לה צריך להעביר את הכתובת של המשתנה:

sum(&a);

הפלט:

sum function: 11 
main function: 11 
challenge icon

אתגר

קל

בקוד הנתון, אנחנו מגדירים משתנה בשם y.

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

נסו בעצמכם

#include <stdio.h>


// הפונקציה square להעלאת ערך בריבוע באמצעות מצביע
 
int main(void) {

    int a = 200;
    
    // קרא לפונקציה square
     
    // הדפס את המשתנה המקורי 
    
    return 0;
}

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

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