自定义类型的数据,允许存放不同类型的数据
struct 结构体名{数据类型1 变量1;数据类型2 变量2 ...};

如上,我们定义了个Student类型的结构体,并定义了此类型的变量

我们可以通过.属性名称获取属性值

我们定义结构体的时候也可以在最后加上变量名进行定义
结构体数组

可以如上定义数组
结构体指针
我们之前讲过指针,当然指针也能指向结构体变量,如下,我们访问结构体属性使用点. 指针变量则使用->访问属性

嵌套结构体
感觉没什么多说的,就是属性可以是结构体

结构体与函数参数传递

简单定义调用结构体做参数的方法如上,这里需要注意如果main和另一个方法都调用结构体,为了都能被识别,需要将结构体定义在main函数外边,而且调用的函数传结构体参数需要使用struct 结构体类型 结构体形参名(struct也可以省略),我们尝试在方法里修改形参,结果是改变不了外部的结构体的

而如上,当我们给方法传入地址给结构体指针时,可以看到实现了对指向结构体的修改
我们使用值传递时,会在内存中额外开辟空间,这种情况下比较浪费内存,尤其是结构体占内存大的时候,就需要使用指针变量,因为指针变量仅4字节。如果我们希望方法限制不能修改结构体对象,就需要使用常量指针

如上,我们定义了常量指针,当方法尝试修改时,就会提示错误
网友评论