Golang之指针(point)再探索

先记录代码

package main

import "fmt"

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

func main() {
    //b := 255
    //var a *int = &b // a是int指针,指向b的内存地址
    //fmt.Printf("Type of is:%T\n", a)
    //fmt.Println("address of b is", a)
    //

    //a := 22
    //var b *int //b 这个变量是int类型的指针变量,变量的值,也只能是int型指针
    //if b == nil {
    //    // 指针的零值是nil
    //    fmt.Println("b is", b)
    //    b = &a
    //    fmt.Println("b after initialization is", b)
    //}

    //b := 255
    //a := &b
    //fmt.Println("address of b is", a)//打印b的内存地址
    //fmt.Println("value of b is", *a)//打印b的值,可以通过*a指针

    //b := 255
    //a := &b
    //fmt.Println("address of b is:", a) //b的内存地址
    //fmt.Println("value of b is:", *a)
    //*a++ //通过a的指针加一
    //fmt.Println("new value of b is:", b)

    //a := 58
    //fmt.Println("value of a befor func call is:", a)
    //b := &a
    //change(b) //指针变量b,改变a的值,a=55,
    //fmt.Println("value of a after call is:", a)

    /*
        不要将指向数组的指针,作为参数传递给函数,改用切片

    */
    //a := [3]int{89, 90, 91}
    //modify(&a) //传递数组a的地址,给modify
    //fmt.Println(a)

    a := [3]int{89, 90, 91}
    modify(a[:]) //传入一个a的切片
    fmt.Println(a)
}

//函数传递指针,改变参数的内存地址。
//func change(val *int) {
//    *val = 55

//修改数组的值
//传递指向数组的指针,作为参数,并且对其修改
//func modify(arr *[3]int) {
//    (*arr)[0] = 90
//    //arr[0]=90  //也可以这么写,这是上面的简写形式(*a)[X]可以写成a[X]
//}

//切片方式修改函数
//这个方法是修改函数最常用的,最好的方法。。。。。。。。。。。。
func modify(sls []int) {
    sls[0] = 91
}

//Go不支持如同C的指针运算

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Unity Shader

Shader初学笔记:简单参数传入随机颜色

float4 vertex : POSITION;

504120
来自专栏程序员的知识天地

JavaScript学习笔记

【如果大家对程序员,web前端感兴趣,想要学习的,关注一下小编吧。加群:731771211。免费赠送web前端系统的学习资料!!前端学习必备公众号ID:mtbc...

26020
来自专栏GreenLeaves

JavaScript之字符串引号的使用技巧

在JavaScript中可以随意使用引号,但是最好根据字符串包含的字符来选择。 1.如果字符串里面包含了单引号,那就把字符串放在双引号里面 var age = ...

19670
来自专栏HTML5学堂

2016.07 第一周 群问题分享

HTML+CSS 如何用CSS实现一个元素footer一直贴在浏览器底部 2016.06.27~2016.07.01 核心概念 margin-bottom负值、...

297100
来自专栏Golang语言社区

厚土Go学习笔记 | 20. slice 继续

slice是一个序列的值,可以根据序列号来访问。可以使用 len(s) 返回 slice s 的长度。 写一个例子,利用 for 循环,打印出 slice 的每...

363140
来自专栏PHP在线

jquery事件

parent > child在给定的父元素下匹配所有的子元素 参数 parentSelectorV1.0 任何有效选择器 childSelectorV1.0 用...

34170
来自专栏Java帮帮-微信公众号-技术文章全总结

JS之文档对象模型DOM

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gbk"> ...

31260
来自专栏九彩拼盘的叨叨叨

学习前端 第6周 第3天

7720
来自专栏Golang语言社区

Golang语言社区-【基础知识】切片

Go编程切片是一种抽象了Go编程数组。由于Go编程数组允许您定义的变量,可容纳同类的几个数据项类型,但它不提供任何内置的方法来动态地增加它的大小或得到一个子数组...

37480
来自专栏Golang语言社区

go语言数组的拷贝

go语言的数组与c语言的数据有一点不太一样的地方,go语言的赋值是值拷贝 package main import "fmt" func main...

42590

扫码关注云+社区

领取腾讯云代金券