美文网首页
Go之指针

Go之指针

作者: 测试探索 | 来源:发表于2020-06-01 06:06 被阅读0次
1. 指针的概念

指针是存储另一个变量的内存地址的变量

2. 获取变量的地址

Go语言的取地址符是&,放到一个变量前使用就会返回响应变量的内存地址

package main

import "fmt"

func main() {
    a := 10
    fmt.Println("a的数据是: ",a)
    fmt.Printf("%T\n",a)
    fmt.Printf("a的地址是:%p\n",&a)

}
//结果
a的数据是:  10
int
a的地址是:0xc00000a0e8
3. 声明指针

声明指针,*T是指指针变量的类型,它指向T类型的值

var var_name *var-type
var_type:指针类型
var_name:指针变量名
*:用于指定变量是作为一个指针

var ip *int //指向整形

//代码
package main

import "fmt"

func main() {
    a := 10
    //fmt.Println("a的数据是: ",a)
    //fmt.Printf("%T\n",a)
    //fmt.Printf("a的地址是:%p\n",&a)

//  创建一个指针变量,用于存储变量a的地址
    var p1 *int  //<nil>,空指针
    fmt.Println(p1)
    p1 = &a  //p1指向了a的内存地址
    fmt.Println("p1的数值是: ",p1) //p1中存储的是a的地址
    fmt.Printf("p1自己的地址是%P: ",&p1)
    fmt.Println("p1的数值,是a的地址,该地址存储的数据:",*p1)//获取指针指向的变量的数值

//  操作变量,更改数值,不会改变地址
    a = 100
    fmt.Println(a)
    fmt.Printf("%p\n",&a)

//   通过指针,改变变量的数值
    *p1 = 200
    fmt.Println(a)
//   指针的指针
    var p2 **int
    fmt.Println(p2)
    p2 = &p1
    fmt.Printf("a的数据类型是%T,P1的数据类型是%T,P2的数据类型是%T",a,p1,p2)
    fmt.Println("p2的数值是: ",p2) //p1中存储的是a的地址
    fmt.Printf("p2自己的地址是%P: ",&p2)
    fmt.Println("p2存储的地址,一定的数值,就是p1的地址,对应的数据",*p2)
    fmt.Println("p2存储的地址,一定的数值,再获取对应的数值",**p2)
}

//结果
<nil>
p1的数值是:  0xc0000a0090
p1自己的地址是%!P(**int=0xc0000ca018): p1的数值,是a的地址,该地址存储的数据: 10
100
0xc0000a0090
200
<nil>
a的数据类型是int,P1的数据类型是*int,P2的数据类型是**intp2的数值是:  0xc0000ca018
p2自己的地址是%!P(***int=0xc0000ca028): p2存储的地址,一定的数值,就是p1的地址,对应的数据 0xc0000a0090
p2存储的地址,一定的数值,再获取对应的数值 200

相关文章

  • golang内存逃逸

    一篇很好的博客: Go 语言机制之栈与指针 Go 语言机制之逃逸分析 Go 语言机制之内存剖析 Go 语言机制之数...

  • Go之指针

    1. 指针的概念 指针是存储另一个变量的内存地址的变量 2. 获取变量的地址 Go语言的取地址符是&,放到一个变量...

  • 关于golang指针的理解与使用

    Go指针理解 Go 有指针,但是没有指针运算。你不能用指针变量遍历字符串的各个字节。在 Go 中调用函数的时候,得...

  • 特殊数据类型

    指针 GO 语言像 C 一样有指针,可以通过指针访问数据,但是 GO 的指针要安全的多: 首先,访问空指针会直接报...

  • protoc-生成go指针

    protoc-生成go指针 这里指的是为结构体中基础类型生成go指针,嵌套结构体默认就是指针 为什么需要生成指针?...

  • go语言值传递与指针传递

    go语言指针 go语言作为静态编译型语言,具有指针类型,但是不提供对指针的移位危险操作,防止指针的越界等问题。 g...

  • Go教程第十篇:指针

    指针 在这篇教程中,我们将学习Go里面的指针是如何工作的,以及Go的指针和C/C++的区别和差异。 什么是指针 ?...

  • Golang 指针

    指针 区别于C/C++中的指针,Go语言中的指针不能进行偏移和运算,是安全指针。Go语言当中的指针涉及到三个点:指...

  • Go语言 指针

    指针 概念 Go语言的指针和C语言一样也是用来保存地址的变量 格式 普通指针 指向数组的指针 注意点 GO语言中只...

  • go语言指针类型的使用

    go语言的指针类型 简单地说go语言的指针类型和C/C++的指针类型用法是一样的,除了出去安全性的考虑,go语言增...

网友评论

      本文标题:Go之指针

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