美文网首页
Go_023_指针类型

Go_023_指针类型

作者: 为宇绸缪 | 来源:发表于2023-05-15 22:30 被阅读0次

指针的基本使用

计算机中所有的数据都必须放在内存中,不同类型的数据占用的字节数不一样,例如 int 占用 4 个字节。为了正确地访问这些数据,必须为每个字节都编上号码,就像门牌号、身份证号一样,每个字节的编号是唯一的,根据编号可以准确地找到某个字节。

我们将内存中字节的编号称为地址(Address)或指针(Pointer)。地址从 0 开始依次增加,对于 32 位环境,程序能够使用的内存为 4GB,最小的地址为 0,最大的地址为 0XFFFFFFFF。

数据在内存中的地址也称为指针,如果一个变量存储了一份数据的指针,我们就称它为指针变量

Go语言中使用对于指针存在两种操作: 取址取值。(Go语言中的指针只有两个操作权限)

符号 名称 作用
&变量 取址符 返回变量所在的地址
*指针变量 取值符 返回指针指地址存储的值
package main

import "fmt"

func main() {
    // &变量:获取变量地址
    var x = 10
    fmt.Printf("重新赋值之前x的对应地址: %p\n", &x)
    x = 100
    fmt.Printf("重新赋值之后x的对应地址: %p\n", &x)
}

/*
赋值之前x的对应地址: 0xc000122008
赋值之后x的对应地址: 0xc000122008
*/

指针变量用来接收地址的值。指针类型存储地址值

var p *int  // p 是一个整型指针类型
p = &x
fmt.Println(p)

取地址操作、地址赋值、取值操作

package main

import (
    "fmt"
    "reflect"
)

func main() {
    // (1) 获取地址:&变量
    // &变量:获取变量地址
    var x = 10
    fmt.Printf("赋值之前x的对应地址: %p\n", &x)
    x = 100
    fmt.Printf("赋值之后x的对应地址: %p\n", &x)

    // (2) 地址赋值: 指针类型或地址类型
    // 可以写成 var p = &x,但刚开始的时候不建议这么写
    var p *int // p 是一个整型指针类型
    p = &x
    fmt.Println(p)

    
    // (3) 取值操作:*指针变量
    // *p就是拿到地址当中的数据,与原有的数据类型一致,不是什么地址类型
    fmt.Println(*p, reflect.TypeOf(*p))
    *p = 101
    fmt.Println(x)
}

相关文章

  • 指针运算

    指针的类型与指针指向的类型明显不相等 指针的类型表示指针自身的类型; 指针指向类型表示指针指向数据(内存)的类型。...

  • 指针小解

    原文链接指针的类型分为指针本身的类型和指针所指向的类型 int *ptr; //指针的类型是int *, 指针...

  • Golang学习 - unsafe 包

    指针类型: *类型:普通指针,用于传递对象地址,不能进行指针运算。 unsafe.Pointer:通用指针类型,用...

  • C 语言指针

    指针类型:指针的读取长度,指针的读取方向(大小端) 空指针,无类型指针,野指针 常量指针,指向常量的指针 http...

  • unsafe包

    go语言的指针类型分为三种:(1)普通指针类型:*类型,用于存储地址,不能进行指针运算(2)通用指针类型:用于转换...

  • 指针

    指针是一种数据类型。指针装的是地址类型的数据。 注意:指针指向A的地址,那么:*+指针名=A的值!!! 指针类型 ...

  • 指针2

    指针三要素1正在自身类型, 指针指向的类型 ,指针指向的地址 数组指针 int(*p)[5] 指针数组 int ...

  • C++ 函数指针和函数类型

    函数指针和函数类型 函数指针指向的是函数而非对象。和其他指针类型一样,函数指针指向某种特定类型。 函数类型由它的返...

  • 4 Go特种类型:值、指针、引用及nil

    一、值、指针类型及引用类型 在Go中,一个变量持有的内容无非三种:值类型、指针类型及引用类型。值类型和指针类型可以...

  • NDK启航篇——C语言基础(函数指针)

    昨天介绍了指针类型、空指针、指针运算,今天来写一下函数指针 函数指针 函数指针的定义:函数的返回值类型(函数指针的...

网友评论

      本文标题:Go_023_指针类型

      本文链接:https://www.haomeiwen.com/subject/eysvsdtx.html