结构体(类)中的匿名字段的类型,也可以是指针。
例如:
输出结果:
输出了结构体的地址。如果要取值,可以进行如下操作:
在定义对象s时,完成初始化,然后通过”.”的操作完成成员的操作。
但是,注意以下的写法是错误的:
大家可以思考一下,以上代码为什么会出错?
会出错,错误信息如下:
invalid memory address or nil pointer dereference
翻译成中文:无效的内存地址或nil指针引用
意思是*Person没有指向任何的内存地址,那么其默认值为nil.
也就是指针类型匿名字段*Person没有指向任何一个结构体,所以对象s也就无法操作Person中的成员。
具体的解决办法如下:
new( )的作用是分配空间,new(
)函数的参数是一个类型,这里为Person结构体类型,返回值为指针类型,所以赋值给*Person,
这样*Person也就指向了结构体Person的内存