Go 语言中指针 (pointer) 的概念和用法

推荐答案

-- -------------------- ---- -------
------- ----

------ -----

---- ------ -
    --- - --- - --
    --- - ---- - --

    ------------------ -- ---- --
    -------------------- -- ---- ---
    ------------------ -- ---- --
    ------------------ ------- -- ---- ---

    -- - --
    ---------------- ----- -- ---- --
-

本题详细解读

指针的概念

在 Go 语言中,指针是一个变量,它存储了另一个变量的内存地址。通过指针,我们可以直接访问和修改该内存地址中存储的值。

指针的声明与初始化

在 Go 中,指针的声明使用 * 符号,例如 var p *int 表示声明一个指向 int 类型变量的指针。指针的初始化可以通过 & 符号获取变量的地址,例如 p = &a 表示将变量 a 的地址赋值给指针 p

指针的解引用

通过 * 符号可以解引用指针,即访问指针所指向的内存地址中存储的值。例如 *p 表示获取指针 p 所指向的值。

指针的修改

通过解引用指针,我们可以修改指针所指向的内存地址中存储的值。例如 *p = 20 表示将指针 p 所指向的值修改为 20

示例代码解析

  1. var a int = 10:声明并初始化一个 int 类型的变量 a,值为 10
  2. var p *int = &a:声明一个指向 int 类型的指针 p,并将其初始化为变量 a 的地址。
  3. fmt.Println("Value of a:", a):输出变量 a 的值。
  4. fmt.Println("Address of a:", &a):输出变量 a 的内存地址。
  5. fmt.Println("Value of p:", p):输出指针 p 的值,即变量 a 的地址。
  6. fmt.Println("Value pointed by p:", *p):输出指针 p 所指向的值,即变量 a 的值。
  7. *p = 20:通过指针 p 修改变量 a 的值为 20
  8. fmt.Println("New value of a:", a):输出修改后的变量 a 的值。

通过这个示例,我们可以看到指针的基本用法,包括指针的声明、初始化、解引用和修改。

纠错
反馈