golang学习之指针、内存分配
2015-03-18 13:39
417 查看
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 = 8 fmt.Printf("p: %v,%v\n", p, *p) //数组的初始化及输出 m := [3]int{3, 4, 5} fmt.Printf("m:%v--%v,%v,%v\n", m, m[0], m[1], m[2]) //指针数组的初始化及输出 //j, k, l := 3, 4, 5 //x := [3]*int{&j, &k, &l} x := [3]*int{&m[0], &m[1], &m[2]} fmt.Printf("x:%v,%v,%v\n", x[0], x[1], x[2]) fmt.Printf("*x:%v,%v,%v\n", *x[0], *x[1], *x[2]) var n [3]*int n = x fmt.Printf("n:%v,%v,%v\n", n[0], n[1], n[2]) //指向数组的指针,也即二级指针的使用 y := []*[3]*int{&x} fmt.Printf("y:%v,%v\n", y, y[0]) fmt.Printf("*y[0]:%v\n", *y[0]) fmt.Printf("*y[][]:%v,%v,%v\n", *y[0][0], *y[0][1], *y[0][2]) /* *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 = 63333 p.score = 99 fmt.Println(*p) //var定义的变量是数值形式 var st Student st.name = "Chinese" st.id = 666333 st.score = 100 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, 3, 100) fmt.Println(ptr) stu := []Student{{"China", 3333, 66}, {"Chinese", 4444, 77}, {"Chince", 5555, 88}} fmt.Println(stu) }
相关文章推荐
- golang学习之指针、内存分配
- C语言学习7-1:使用6级指针访问一个整数,使用隐式内存分配中转,约瑟夫环
- C和指针之动态内存分配堆、栈、全局区(静态区)、常量区对比总结学习笔记
- C语言学习9: malloc动态内存存储,动态内存分配去空格字符增长版,动态内存分配去符号incr增长版,型参和返回值都是int型的函数的指针,main函数的地址也可以用指针指向,typedef定义函数指针,函数定义与嵌套的作用,返回函数指针类型,const作用
- 【C/C++语言基础学习】在主函数的定义的指针数组、二维数组通过三级指针在被调用函数分配内存
- 数据结构 学习笔记之:关于顺序栈中给结构体类型指针分配内存时,使用malloc和不使用malloc的疑惑之解惑!
- 深入理解C指针学习笔记---多级指针的内存分配问题(五)
- C\C++指针(地址)学习总结(附内存分配方式)
- C语言学习7 :二级指针定义,强制转换,多级指针初步,6级指针构造,错误应用*p=&a,错误应用 二级p2,void型指针的兼容性,malloc函数基本用法,malloc分配空间和堆栈空间的区别,验证malloc函数内存的分配,验证malloc函数的越界,内存泄漏,指针不能返回局部变量地址,内存分配
- 内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结
- 内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结
- 二维字符数组与二维整型数组在内存中的分配及指针的问题
- 指针部分释疑之二:内存的分配及内存错误类型
- 内存分配详解、指针与数组[C++][内存管理]
- 学点 C 语言(23): 数据类型 - 给指针分配内存
- 结构体指针为分配内存访问结构体成员错误
- 内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结
- 内存分配详解、指针与数组[C++][内存管理]
- 用new来为指针分配内存
- Delphi 的内存操作函数(3): 给结构体指针分配内存