אופרטור לקיחת הכתובת (&)
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C של Coddy. שיעור 3 מתוך 63.
עכשיו, לאחר שלמדת להצהיר על מצביעים, עליך ללמוד איך לאחסן בהם בפועל כתובת זיכרון. אופרטור קבלת הכתובת (&) הוא המפתח לקבלת כתובת הזיכרון של כל משתנה.
כשמציבים את האופרטור & לפני שם של משתנה, הוא מחזיר את כתובת הזיכרון שבה המשתנה מאוחסן. חשבו על זה כאילו אתם שואלים: "איפה המשתנה הזה נמצא בזיכרון?"
int age = 25;
int *ptr;
ptr = &age; // שמור את הכתובת של 'age' ב-'ptr'בדוגמה הזו, &age נותן לנו את כתובת הזיכרון של המשתנה age. לאחר מכן אנחנו מקצים את הכתובת הזו למצביע שלנו ptr. עכשיו ptr "מצביע אל" המשתנה age.
אופרטור קבלת הכתובת חיוני, כי הוא הגשר בין משתנים רגילים למצביעים. בלעדיו, לא היית יכול לומר למצביע על איזה משתנה להצביע. זכור שסוגי הנתונים חייבים להתאים — אפשר לשייך למצביע שהוצהר עבור מספרים שלמים רק את הכתובת של מספר שלם.
אתגר
קלכתבו תוכנית C שמדגימה שימוש באופרטור לקיחת הכתובת כדי לקשר משתנים למצביעים. התוכנית שלכם צריכה:
- להכריז על משתנה מספר שלם בשם
numberולאתחל אותו לערך 42 - להכריז על משתנה תו בשם
letterולאתחל אותו לערך 'X' - להכריז על מצביע למספר שלם בשם
num_ptr - להכריז על מצביע לתו בשם
char_ptr - להשתמש באופרטור לקיחת הכתובת כדי להציב את הכתובת של
numberבתוךnum_ptr - להשתמש באופרטור לקיחת הכתובת כדי להציב את הכתובת של
letterבתוךchar_ptr - להדפיס את הכתובות השמורות בשני המצביעים באמצעות
printfעם מציין הפורמט%p
הפלט שלכם צריך להציג את כתובות המצביעים בפורמט הבא:
Address of number: [address]
Address of letter: [address]כתובות הזיכרון בפועל ישתנו בין הרצות של התוכנית, אך הפורמט והתוויות חייבים להתאים בדיוק לדוגמה שלמעלה. [address] הוא מציין מקום לכתובת המודפסת: אל תדפיסו את הסוגריים המרובעים.
נסו בעצמכם
#include <stdio.h>
int main() {
// TODO: כתבו את הקוד שלכם כאן
// 1. הכריזו על המשתנים ואתחלו אותם
// 2. הכריזו על המצביעים
// 3. השתמשו באופרטור קבלת הכתובת כדי להקצות כתובות
// 4. הדפיסו את הכתובות בפורמט המוצג
return 0;
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1יסודות המצביעים
מהו מצביע?הכרזה על מצביעיםאופרטור לקיחת הכתובת (&)אופרטור ביטול ההפניה (*)מצביעי NULLסיכום: יסודות המצביעים2מצביעים ומערכים
שמות מערכים כמצביעיםאיברי מערך ומצביעיםאריתמטיקה של מצביעיםהשוואת מצביעיםסיכום: מעבר על מערך באמצעות מצביעים5מצביעים ופונקציות
העברה לפי ערךהעברת מצביעים לפונקציותשינוי משתנים באמצעות מצביעיםדוגמה קלאסית: החלפההעברת מערכים לפונקציותחזרה: ארגומנטים של מצביעי פונקציה3מערכי תווים ומחרוזות
מחרוזות כמערכי charתו הסיום nullקלט מחרוזת באמצעות scanfשימוש ב־strlen()שימוש ב־strcpy()שימוש ב־strcat()שימוש ב־strcmp()סיכום: פונקציות מחרוזת בסיסיותתרגלו בעצמכם: קומפיילר C אונליין