Menu
CoddyTech

Con trỏ là gì

Bài học 2 trên 19 trong khóa học Hàm và con trỏ trong Go của Coddy.

Câu hỏi đầu tiên chúng ta cần trả lời là: con trỏ là gì? Chúng ta đã tìm hiểu về biến, được định nghĩa là những chiếc hộp lưu trữ giá trị. Còn con trỏ là những chiếc hộp lưu trữ địa chỉ thay vì giá trị.

Khi tạo một biến trong bất kỳ ngôn ngữ lập trình nào, biến đó được lưu trong bộ nhớ và mỗi vị trí trong bộ nhớ đều có một địa chỉ. Ví dụ, nếu định nghĩa một biến như sau:

var name = "Coddy"

Chúng ta có thể biểu diễn biến này trong bộ nhớ như sau:


 

Để lấy bất kỳ giá trị nào từ bộ nhớ, chúng ta cần địa chỉ. Địa chỉ cho biết vị trí này nằm ở đâu trong bộ nhớ.

Con trỏ là một chiếc hộp lưu trữ địa chỉ bộ nhớ thay vì giá trị. Vì vậy, chúng ta gọi nó là con trỏ vì nó trỏ đến một địa chỉ trong bộ nhớ.

Cú pháp để định nghĩa một con trỏ như sau:

var name = "Coddy"
namePointer := &name

Ở đây, chúng ta định nghĩa một con trỏ có tên namePointer và dùng & để trỏ đến địa chỉ của biến name.

Chúng ta có thể định nghĩa một con trỏ mới với giá trị mặc định là nil như sau:

var coddy *string

Cú pháp * này tạo một con trỏ mới tên là coddy có kiểu string, và giá trị mặc định của con trỏ là nil.

Để in ra địa chỉ được lưu trong con trỏ, chúng ta chỉ cần truyền tên con trỏ như sau:

fmt.Println(coddy)

Để in ra giá trị được lưu tại địa chỉ mà con trỏ trỏ đến, chúng ta dùng dấu hoa thị *:

fmt.Println(*coddy)
challenge icon

Thử thách

Dễ
  • Khai báo một biến có tên a với giá trị 200.
  • Khai báo một con trỏ mới có tên aPointer thuộc kiểu int.
  • Gán địa chỉ của biến a cho con trỏ aPointer.
  • In ra giá trị của con trỏ aPointer và biến a.

Tự làm thử

package main

import "fmt"

func main() {
    // Khai báo biến a có giá trị 200.
     

    // Khai báo con trỏ mới aPointer thuộc kiểu int.
    
    // Gán địa chỉ của biến a cho con trỏ aPointer.
     

    // In ra giá trị của con trỏ aPointer và biến a.
    fmt.Println("the value of the pointer:",?)
    fmt.Println("the value of the variable :",?)
}

Tất cả bài học trong Hàm và con trỏ trong Go

Tự luyện tập: Trình biên dịch Go online