Menu
Coddy logo textTech

הכרזה על מצביעים

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C של Coddy. שיעור 2 מתוך 63.

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

התחביר הבסיסי להכרזה על מצביע הוא: data_type *pointer_name;

int *ptr;        // מכריז על מצביע למספר שלם
char *ch_ptr;    // מכריז על מצביע לתו
float *f_ptr;    // מכריז על מצביע למספר נקודה צפה

הכוכבית (*) היא שהופכת את ההכרזה הזו להכרזה על מצביע. היא אומרת למהדר שהמשתנה הזה יאחסן כתובת בזיכרון, ולא את ערך הנתונים עצמו. כשמכריזים על int *ptr;, אומרים "ptr הוא מצביע שיכול לאחסן את הכתובת של משתנה מסוג מספר שלם."

נוהג טוב הוא לאתחל מצביעים ל־NULL אם הם עדיין לא מצביעים לכתובת זיכרון תקפה. כך נמנע מהם להצביע על מיקומי זיכרון אקראיים: int *ptr = NULL;

בעת הדפסת כתובות של מצביעים באמצעות printf, השתמשו במציין הפורמט %p. לעיתים קרובות מומלץ להמיר את המצביע ל־(void *) כדי להבטיח תאימות ועיצוב נכון: printf("%p", (void *)ptr);

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

challenge icon

אתגר

קל
כתוב תוכנית C שמדגימה תחביר תקין של הצהרת מצביעים. התוכנית שלך צריכה:
  1. להצהיר על מצביע למספר שלם בשם int_ptr, ולאתחל אותו ל-NULL
  2. להצהיר על מצביע לתו בשם char_ptr, ולאתחל אותו ל-NULL
  3. להצהיר על מצביע למספר ממשי מסוג float בשם float_ptr, ולאתחל אותו ל-NULL
  4. להדפיס את כתובות הזיכרון המאוחסנות בכל מצביע באמצעות printf עם מציין הפורמט %p. בעת ההדפסה, יש להמיר את המצביע ל-(void*) כדי להבטיח עיצוב נכון, לדוגמה: printf("Label: %p\n", (void*)ptr);

הפלט שלך צריך להציג את שלוש כתובות המצביעים בפורמט הבא:

Integer pointer: [address]
Character pointer: [address]  
Float pointer: [address]

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

נסו בעצמכם

#include <stdio.h>

int main() {
    // TODO: הצהירו כאן על המצביעים שלכם
    
    
    // TODO: הדפיסו את כתובות המצביעים בפורמט הנדרש
    
    
    return 0;
}
quiz iconבחנו את עצמכם

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

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

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