Menu
Coddy logo textTech

מהו מצביע

שיעור 2 מתוך 19 בקורס פונקציות ומצביעים ב-Golang של Coddy.

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

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

var name = "Coddy"

נוכל לייצג זאת בזיכרון כך:


 

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

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

כך מגדירים מצביע:

var name = "Coddy"
namePointer := &name

כאן אנחנו מגדירים מצביע בשם namePointer ומציבים את הכתובת של המשתנה name באמצעות &.

נוכל להגדיר מצביע חדש עם ערך ברירת המחדל, שהוא nil, כך:

var coddy *string

התחביר הזה * יוצר מצביע חדש בשם coddy מסוג string, וערך ברירת המחדל של מצביע הוא nil.

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

fmt.Println(coddy)

כדי להדפיס את הערך המאוחסן בכתובת שעליה המצביע מצביע, משתמשים בכוכבית *:

fmt.Println(*coddy)
challenge icon

אתגר

קל
  • הכריזו על משתנה בשם a עם הערך 200.
  • הכריזו על מצביע חדש בשם aPointer מסוג int.
  • הצביעו על כתובת המשתנה a באמצעות המצביע aPointer.
  • הדפיסו את הערך של המצביע aPointer והמשתנה a.

נסו בעצמכם

package main

import "fmt"

func main() {
    // הכריזו על משתנה בשם a שערכו 200.
     

    // הכריזו על מצביע חדש בשם aPointer מטיפוס int.
    
    // הציבו במצביע aPointer את הכתובת של המשתנה a.
     

    // הדפיסו את הערך של המצביע aPointer ושל המשתנה a.
    fmt.Println("the value of the pointer:",?)
    fmt.Println("the value of the variable :",?)
}

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

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