ערך לעומת מצביע
שיעור 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 אתגר
קלבקוד הנתון, אנחנו מגדירים משתנה בשם y.
- כתבו פונקציה
squareשמקבלת מצביע למספר שלם בתור פרמטר. - בתוך הפונקציה הזאת, העלו בריבוע את הערך של המשתנה שאליו המצביע מצביע והדפיסו את ערכו.
- הדפיסו את ערך המשתנה הן בפונקציה
squareוהן בפונקציהmainכדי להראות שהמשתנה המקורי השתנה.
נסו בעצמכם
#include <stdio.h>
// הפונקציה square להעלאת ערך בריבוע באמצעות מצביע
int main(void) {
int a = 200;
// קרא לפונקציה square
// הדפס את המשתנה המקורי
return 0;
}
כל השיעורים ביחידה פונקציות ב-C
תרגלו בעצמכם: קומפיילר C אונליין