golang学习之指针、内存分配
2017-05-02 15:35
399 查看
golang学习之指针、内存分配
http://studygolang.com/articles/26582015-03-18 13:39 neujie
阅读 8760 次 0 人喜欢 0 条评论 收藏
1 func pointer_test() { 2 //空指针,输出为nil 3 var p *int 4 fmt.Printf("p: %v\n", p) 5 //指向局部变量,变量值初始为0 6 var i int 7 p = &i 8 fmt.Printf("p: %v,%v\n", p, *p) 9 //通过指针修改变量数值 10 *p = 8 11 fmt.Printf("p: %v,%v\n", p, *p) 12 //数组的初始化及输出 13 m := [3]int{3, 4, 5} 14 fmt.Printf("m:%v--%v,%v,%v\n", m, m[0], m[1], m[2]) 15 //指针数组的初始化及输出 16 //j, k, l := 3, 4, 5 17 //x := [3]*int{&j, &k, &l} 18 x := [3]*int{&m[0], &m[1], &m[2]} 19 fmt.Printf("x:%v,%v,%v\n", x[0], x[1], x[2]) 20 fmt.Printf("*x:%v,%v,%v\n", *x[0], *x[1], *x[2]) 21 22 var n [3]*int 23 n = x 24 fmt.Printf("n:%v,%v,%v\n", n[0], n[1], n[2]) 25 //指向数组的指针,也即二级指针的使用 26 y := []*[3]*int{&x} 27 fmt.Printf("y:%v,%v\n", y, y[0]) 28 fmt.Printf("*y[0]:%v\n", *y[0]) 29 fmt.Printf("*y[][]:%v,%v,%v\n", *y[0][0], *y[0][1], *y[0][2]) 30 /* 31 *X -> v 32 [3]X -> [v0][v1][v2] 33 []X -> [v0]...[vi] 34 [3]*X -> [p0][p1][p2] 35 | | | 36 j k l 37 []*[3]*X -> [n0]...[ni] 38 | ... | 39 [p0]->j 40 [p1]->k 41 [p2]->l 42 */ 43 } 44 45 type Student struct { 46 name string 47 id int 48 score uint 49 } 50 51 func memery_test() { 52 //new分配出来的数据是指针形式 53 p := new(Student) 54 p.name = "China" 55 p.id = 63333 56 p.score = 99 57 fmt.Println(*p) 58 //var定义的变量是数值形式 59 var st Student 60 st.name = "Chinese" 61 st.id = 666333 62 st.score = 100 63 fmt.Println(st) 64 //make分配slice、map和channel的空间,并且返回的不是指针 65 var ptr *[]Student 66 fmt.Println(ptr) //ptr == nil 67 ptr = new([]Student) //指向一个空的slice 68 fmt.Println(ptr) 69 *ptr = make([]Student, 3, 100) 70 fmt.Println(ptr) 71 stu := []Student{{"China", 3333, 66}, {"Chinese", 4444, 77}, {"Chince", 5555, 88}} 72 fmt.Println(stu) 73 }
output:
{China 63333 99}
{Chinese 666333 100}
<nil>
&[]
&[{ 0 0} { 0 0} { 0 0}]
[{China 3333 66} {Chinese 4444 77} {Chince 5555 88}]
相关文章推荐
- golang学习之指针、内存分配
- C语言学习7-1:使用6级指针访问一个整数,使用隐式内存分配中转,约瑟夫环
- C和指针之动态内存分配堆、栈、全局区(静态区)、常量区对比总结学习笔记
- C语言学习9: malloc动态内存存储,动态内存分配去空格字符增长版,动态内存分配去符号incr增长版,型参和返回值都是int型的函数的指针,main函数的地址也可以用指针指向,typedef定义函数指针,函数定义与嵌套的作用,返回函数指针类型,const作用
- 深入理解C指针学习笔记---多级指针的内存分配问题(五)
- 数据结构 学习笔记之:关于顺序栈中给结构体类型指针分配内存时,使用malloc和不使用malloc的疑惑之解惑!
- 【C/C++语言基础学习】在主函数的定义的指针数组、二维数组通过三级指针在被调用函数分配内存
- C\C++指针(地址)学习总结(附内存分配方式)
- C语言学习7 :二级指针定义,强制转换,多级指针初步,6级指针构造,错误应用*p=&a,错误应用 二级p2,void型指针的兼容性,malloc函数基本用法,malloc分配空间和堆栈空间的区别,验证malloc函数内存的分配,验证malloc函数的越界,内存泄漏,指针不能返回局部变量地址,内存分配
- 内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结
- 内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结
- 二维字符数组与二维整型数组在内存中的分配及指针的问题
- 指针部分释疑之二:内存的分配及内存错误类型
- 内存分配详解、指针与数组[C++][内存管理]
- 学点 C 语言(23): 数据类型 - 给指针分配内存
- 结构体指针为分配内存访问结构体成员错误
- 内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结
- 内存分配详解、指针与数组[C++][内存管理]
- 用new来为指针分配内存
- Delphi 的内存操作函数(3): 给结构体指针分配内存