Menu
Coddy logo textTech

Czym jest wskaźnik

Lekcja 2 z 19 w kursie Funkcje i wskaźniki w Golang w Coddy.

Pierwsze pytanie, na które musimy odpowiedzieć, brzmi: czym jest wskaźnik? Poznaliśmy już zmienne, które zdefiniowaliśmy jako pudełka przechowujące nasze wartości. Wskaźniki natomiast to pudełka, które przechowują adresy zamiast wartości.

Gdy tworzymy zmienną w dowolnym języku programowania, jest ona przechowywana w pamięci, a każde miejsce w pamięci ma adres. Na przykład, jeśli zdefiniujemy zmienną w ten sposób:

var name = "Coddy"

Możemy przedstawić to w pamięci w ten sposób:


 

Aby móc pobrać dowolną wartość z pamięci, potrzebujemy adresu. Adres wskazuje nam więc, gdzie w pamięci znajduje się to miejsce.

Wskaźnik to natomiast pudełko, w którym przechowujemy adres pamięci zamiast wartości. Dlatego nazywamy go wskaźnikiem — wskazuje on adres w pamięci.

Składnia definiowania wskaźnika wygląda tak:

var name = "Coddy"
namePointer := &name

Tutaj definiujemy wskaźnik o nazwie namePointer i za pomocą & wskazujemy adres zmiennej name.

Możemy zdefiniować nowy wskaźnik z wartością domyślną, którą jest nil, w ten sposób:

var coddy *string

Ta składnia * tworzy nowy wskaźnik o nazwie coddy i typie string, a domyślną wartością wskaźnika jest nil.

Aby wypisać adres przechowywany we wskaźniku, po prostu przekazujemy nazwę wskaźnika w ten sposób:

fmt.Println(coddy)

Aby wypisać wartość przechowywaną pod adresem wskazywanym przez wskaźnik, używamy gwiazdki *:

fmt.Println(*coddy)
challenge icon

Wyzwanie

Łatwy
  • Zadeklaruj zmienną o nazwie a i wartości 200.
  • Zadeklaruj nowy wskaźnik o nazwie aPointer typu int.
  • Przypisz adres zmiennej a do wskaźnika aPointer.
  • Wyświetl wartość wskaźnika aPointer i zmiennej a.

Spróbuj swoich sił

package main

import "fmt"

func main() {
    // Zadeklaruj zmienną o nazwie a i wartości 200.
     

    // Zadeklaruj nowy wskaźnik o nazwie aPointer typu int.
    
    // Przypisz adres zmiennej a do wskaźnika aPointer.
     

    // Wypisz wartość wskaźnika aPointer oraz zmiennej a.
    fmt.Println("the value of the pointer:",?)
    fmt.Println("the value of the variable :",?)
}

Wszystkie lekcje w sekcji Funkcje i wskaźniki w Golang

Poćwicz samodzielnie: Kompilator Go online