结构体指针
Posted miaoweiye
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结构体指针相关的知识,希望对你有一定的参考价值。
peo := new(People) //因为结构体本质是值类型,所以创建结构体指针时已经开辟了内存空间 fmt.Println(peo == nil) //输出:false //由于结构体中属性并不是指针类型,所以可以直接调用 peo.Name = "smallming" fmt.Println(peo)//输出:&{smallming 0} peo1:=peo peo1.Name="小明" fmt.Println(peo1,peo)//输出:&{小明 0} &{小明 0}
- 如果不想使用new(T)函数,可以直接声明结构体指针并赋值
//声明结构体指针 var peo *People //给结构体指针赋值 peo = &People{"smallming", 17} /* 上面代码使用短变量方式如下 peo:= &People{"smallming", 17} */ fmt.Println(peo)
p1 := People{"smallming", 17} p2 := People{"smallming", 17} fmt.Printf("%p %p ", &p1, &p2) //输出地址不同 fmt.Println(p1 == p2) //输出:true p3 := new(People) p3 = &People{"smallming", 17} //结构体变量不能和指针比较,使用*指针取出地址中值 fmt.Println(p1 == *p3) //输出:true p4 := &People{"smallming", 17} //指针比较的是地址 fmt.Println(p3 == p4) //输出:false
以上是关于结构体指针的主要内容,如果未能解决你的问题,请参考以下文章
C 语言结构体 ( 结构体作为函数参数 | 结构体指针作为函数参数 )
C 语言结构体 ( 结构体中嵌套一级指针 | 分配内存时先 为结构体分配内存 然后再为指针分配内存 | 释放内存时先释放 指针成员内存 然后再释放结构头内存 )