Go 学习笔记 07 | 指针详解

析构极昼
• 阅读 221

一、Golang 中的指针

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

通过指针修改值会影响到原来的值。

package main

import (
    "fmt"
)

func main() {
    a := 10
    p := &a
    fmt.Println(p)
    fmt.Println(*p)

    *p = 30

    fmt.Println(a)
}

输出:

0xc000012080
10
30

如何去改变一个指针对应的地址的值:

package main

import (
    "fmt"
)

func fn1(x int) {
    x = 10
}

func fn2(x *int) {
    *x = 40
}

func main() {
    var a = 10
    fn1(a)
    fmt.Println(a)
    fn2(&a)
    fmt.Println(a)
}

输出:

10
40

二、参考教程

Golang 教程 P30

点赞
收藏
评论区
推荐文章
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Kevin501 Kevin501
5年前
Go语言中new()和make()的区别
1.Go语言中的值类型和引用类型值类型:int,float,bool,string,struct和数组(数组要特别注意,别搞混了)变量直接存储值,分配栈区的内存空间,这些变量所占据的空间在函数被调用完后会自动释放。引用类型:slice,map,chan和值类型对应的指针变量存储的是一个地址(或者理解为指针),指针指向内存中真
Wesley13 Wesley13
4年前
ES6模块与CommonJS模块有什么区别?
ES6Module和CommonJS模块的区别:CommonJS是对模块的浅拷贝,ES6Module是对模块的引用,即ES6Module只存只读,不能改变其值,具体点就是指针指向不能变,类似constimport的接口是readonly(只读状态),不能修改其变量值。即不能修改其变量的指针指向,但可以改变变量内部指针指向,可以对comm
Wesley13 Wesley13
4年前
Object
nil用来给对象赋值NULL则给任何指针赋值    //NULL和nil不能互换,nil用于类指针赋值NSNull则用于集合操作一般情况下最好使用用nil(空对象值,有意义)\nil 任意方法\,不会导致崩溃NULL是一个通用指针(泛型指针,指向空指针)NSNull,NULL和nil在本质上应该
Wesley13 Wesley13
4年前
C89和C99标准比较
1、增加restrict指针C99中增加了公适用于指针的restrict类型修饰符,它是初始访问指针所指对象的惟一途径,因此只有借助restrict指针表达式才能访问对象。restrict指针指针主要用做函数变元,或者指向由malloc()函数所分配的内存变量。restrict数据类型不改变程序的语义。如果某个函数定义了两个restrict指针变
Wesley13 Wesley13
4年前
Go语言方法的 值接受者 和 指针接受者 的区别
首先说下结论1\.无论方法的接受者是值接受者还是指针接受者,对象值调用该方法和对象指针调用该方法都是可行的。2\.当方法接受者为指针接受者时,对象的值调用该方法和指针调用该方法都会操作对象本身。3\.当方法接受者为值接受者时,对象的值调用该方法和指针调用该方法都会操作对象的副本,对对象本身无影响。pack
Wesley13 Wesley13
4年前
C++学习(十八)(C语言部分)之 指针2
指针1、指针的概述指针是什么?指针是一个地址是一个常量int整型intaa是变量指针用来做什么?方便使用数组或者字符串像汇编语言一样处理内存地址2、指针变量什么是指针变量?是一个可以存储地址的一个“容器”经常会吧指针变量读作指针后面吧地址当做“指针”吧存储地址的变量叫做“指针变量”
Stella981 Stella981
4年前
Golang教程:指针
什么是指针指针是存储一个变量的内存地址的变量。  !(https://oscimg.oschina.net/oscnet/70c3337580dba5f227a4b71b2f73d6ba527.png)在上图中,变量 b 的值是 156,存储在地址为 0x1040a124 的内存中。变量 a 存储了变量 b 的
九路 九路
3年前
C++之值传递&指针传递&引用传递详解
C之值传递&指针传递&引用传递详解目录C之值传递&指针传递&引用传递详解(about:blankc%E4%B9%8B%E5%80%BC%E4%BC%A0%E9%80%92%E6%8C
小万哥 小万哥
2年前
C 语言指针完全指南:创建、解除引用、指针与数组关系解析
C语言中的指针创建指针我们可以使用引用运算符&获取变量的内存地址:cintmyAge43;//一个int变量printf("%d",myAge);//输出myAge的值(43)printf("%p",&myAge);//输出myAge的内存地址(0x7ff
小万哥 小万哥
1年前
C++ 解引用与函数基础:内存地址、调用方法及声明
C解引用获取内存地址和值在上一页的示例中,我们使用了指针变量来获取变量的内存地址(与引用运算符&一起使用)。但是,你也可以使用指针来获取变量的值,这可以通过使用运算符(解引用运算符)来实现:cstringfood"Pizza";//变量声明stri