func pointer_test() {
//空指针,输出为nil
var p *int
fmt.Printf("p: %v\n", p)
//指向局部变量,变量值初始为0
var i int
p = &i
fmt.Printf("p: %v,%v\n", p, *p)
//通过指针修改变量数值
*p =
fmt.Printf("p: %v,%v\n", p, *p)
//数组的初始化及输出
m := []int{, , }
fmt.Printf("m:%v--%v,%v,%v\n", m, m[], m[], m[])
//指针数组的初始化及输出
//j, k, l := 3, 4, 5
//x := [3]*int{&j, &k, &l}
x := []*int{&m[], &m[], &m[]}
fmt.Printf("x:%v,%v,%v\n", x[], x[], x[])
fmt.Printf("*x:%v,%v,%v\n", *x[], *x[], *x[]) var n []*int
n = x
fmt.Printf("n:%v,%v,%v\n", n[], n[], n[])
//指向数组的指针,也即二级指针的使用
y := []*[]*int{&x}
fmt.Printf("y:%v,%v\n", y, y[])
fmt.Printf("*y[0]:%v\n", *y[])
fmt.Printf("*y[][]:%v,%v,%v\n", *y[][], *y[][], *y[][])
/*
*X -> v
[3]X -> [v0][v1][v2]
[]X -> [v0]...[vi]
[3]*X -> [p0][p1][p2]
| | |
j k l
[]*[3]*X -> [n0]...[ni]
| ... |
[p0]->j
[p1]->k
[p2]->l
*/
} type Student struct {
name string
id int
score uint
} func memery_test() {
//new分配出来的数据是指针形式
p := new(Student)
p.name = "China"
p.id =
p.score =
fmt.Println(*p)
//var定义的变量是数值形式
var st Student
st.name = "Chinese"
st.id =
st.score =
fmt.Println(st)
//make分配slice、map和channel的空间,并且返回的不是指针
var ptr *[]Student
fmt.Println(ptr) //ptr == nil
ptr = new([]Student) //指向一个空的slice
fmt.Println(ptr)
*ptr = make([]Student, , )
fmt.Println(ptr)
stu := []Student{{"China", , }, {"Chinese", , }, {"Chince", , }}
fmt.Println(stu)
}

golang学习之指针、内存分配的更多相关文章

  1. C/C++指针内存分配小细节

    char *pc = NULL; pc = new char[0]; pc[0] = '1'; 相信初学者看见上面这段代码,都会觉得奇怪,new char[n]中的n指定给指针变量分配多少内存空间,而 ...

  2. 《深入理解Java虚拟机》学习笔记之内存分配

    JVM在执行Java程序的过程中会把它所管理的内存划分若干个不同的数据区域,如下图: 大致可以分为两类:线程私有区域和线程共享区域. 线程私有区域 程序计数器(Program Counter Regi ...

  3. C++学习011-常用内存分配及释放函数

    C++用有多种方法来分配及释放内存,下面是一些经常使用的内存分配及释放函数 现在我还是一个技术小白,一般用到也指示 new+delete 和 malloc和free 其他的也是在学习中看到,下面的文字 ...

  4. 【C/C++学院】0828-数组与指针/内存分配/数据结构数组接口与封装

    [送给在路上的程序猿] 对于一个开发人员而言,可以胜任系统中随意一个模块的开发是其核心价值的体现. 对于一个架构师而言,掌握各种语言的优势并能够运用到系统中.由此简化系统的开发,是其架构生涯的第一步. ...

  5. C语言学习笔记--动态内存分配

    1. 动态内存分配的意义 (1)C 语言中的一切操作都是基于内存的. (2)变量和数组都是内存的别名. ①内存分配由编译器在编译期间决定 ②定义数组的时候必须指定数组长度 ③数组长度是在编译期就必须确 ...

  6. JVM学习总结四——内存分配策略

    之前几篇我们介绍了jvm的内存模型以及垃圾回收机制,而本篇我们将介绍几个JVM中对象在分配内存是应该遵循的策略.毕竟,想要去优化程序,不仅要考虑垃圾回收的过程,还要从对象内存分配的角度减少gc的代价. ...

  7. memcached学习——memcached的内存分配机制Slab Allocation、内存使用机制LRU、常用监控记录(四)

    内存分配机制Slab Allocation 本文参考博客:https://my.oschina.net/bieber/blog/505458 Memcached的内存分配是以slabs为单位的,会根据 ...

  8. Golang: map类型切片内存分配

    切片ik通过索引访问,然后为每个map分配内存: 切片jk通过获得切片内每个元素的拷贝来分配内存,并未成功为切片内每个map分配内存,使用时赋值也就失败了 1 package main 2 3 imp ...

  9. 【转载】JVM 学习——垃圾收集器与内存分配策略

    本文主要是对<深入理解java虚拟机 第二版>第三章部分做的总结,文章中大部分内容都来自这章内容,也是博客 JVM 学习的第二部分. 简述 说到垃圾收集(Garbage Collectio ...

随机推荐

  1. [SQL Server 系] T-SQL数据库的创建与修改

    创建数据库 USE master; GO CREATE DATABASE ToyUniverse ON ( NAME = ToyUniverse_Data, FILENAME = 'F:\Projec ...

  2. secure CRT 介绍

        SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录UNIX或Linux服务器主机的软件.     Secure[1] CRT支持SSH,同时 ...

  3. addListener添加事件监听器,第三个参数useCapture (Boolean) 的作用

    addEventListener 有三个参数:第一个参数表示事件名称(不含 on,如 "click"):第二个参数表示要接收事件处理的函数:第三个参数为 useCapture,本文 ...

  4. 小米2s 降到1299

    关于这个价格,网上叫声一片,尤其是几天前刚买了小米2s的,恨死了雷布斯…… 以下是来自百度贴吧的帖子: [02-27 米粉杂谈]我来说个关于价格的事实吧 http://tieba.baidu.com/ ...

  5. SRAM与SDRAM的区别

    http://www.cnblogs.com/spartan/archive/2011/05/06/2038747.html SDRAM SDRAM(Synchronous Dynamic Rando ...

  6. 日志logger

    1.使用指定类初始化日志对象 在日志输出的时候,可以打印出日志信息所在类如:Logger logger = LoggerFactory.getLogger(com.Book.class);       ...

  7. Java基础:三步学会Java Socket编程

    Java基础:三步学会Java Socket编程 http://tech.163.com 2006-04-10 09:17:18 来源: java-cn 网友评论11 条 论坛        第一步 ...

  8. NDK xxxxx could not be resolved解决方法

    Type '*****' could not be resolved Method '******' could not be resolved     问题解决   以下为未尝试方法,如果上面方法解 ...

  9. BZOJ 2005 能量采集(容斥原理)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2005 题意:给定n和m,求 思路:本题主要是解决对于给定的t,有多少对(i,j)满足x= ...

  10. 面向对象设计Object Oriented Design

    http://www.codeproject.com/Articles/93369/How-I-explained-OOD-to-my-wife http://www.cnblogs.com/niyw ...