golang学习之指针、内存分配

neujie · · 19333 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

 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 }

 


有疑问加站长微信联系(非本文作者)

本文来自:博客园

感谢作者:neujie

查看原文:golang学习之指针、内存分配

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

19333 次点击  
加入收藏 微博
1 回复  |  直到 2018-04-03 21:00:52
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传