这里是两个结构体的基本结构。
- 结构体中包含其他结构体类型变量。
- 结构体中也可以包含指向自己的结构体指针。
NextNode就是指向相同结构体类型中的下一个结构体的首地址,在未定义的情况下NextNode的值一般都是置NULL。这样就有可能无限延伸是不是很神奇。
下面的内容中,需要大家稍微了解下,初始化与普通赋值的区别。
变量的初始化:是指在定义变量的同时就为该变量赋值。
结构体变量在初始化*时应该用花括号“{}”将用来初始化的各个数值括起来,并且各个数值之间要用逗号分隔开来,同时必须保证数值与相应成员变量的类型要一一对应。
对于变量而言,如果已经定义了类型,那么在系统内部已经为该变量开辟了内存空间。
成员变量在结构体变量定义好后,已经置为各自类型的NULL状态,如int a;a默认值为0。
这里有种特殊情况。
直接定义结构体变量。也就是声明一个无名的结构体类型。
无名结构体变量由于省略了结构体类型名,无法记录该结构体类型,所以该方式只能用来声明结构体变量,而且以后也不能用他来声明变量或函数等等。
也就是下面的内容中,定义结构体变量之后,初始化定义是无法用的,只可以用成员运算符。
1.1 定义结构体类型时,同时定义结构体变量
在这种情况下赋值成员变量可以是同时进行,也可以是先后进行,就和int a = 1;和int a;a = 1;是一样的道理。但是意义上有些不同
定义结构体变量的同时,初始化结构体变量,相当于int a = 1;
定义结构体变量之后,初始化结构体变量,这在普通变量中是不可以的,因为这就相当于 int a;int a = 1;这样子对普通变量而言就是错误。
定义结构体变量之后,对结构体变量进行非初始化的赋值,相当于 int a;a = 1;
1.1.1 定义结构体变量的同时,初始化结构体变量
赋值之后只是修改了这个成员变量的值,如果赋值只是修改该变量的值,对于地址等内容没有任何影响。
1.1.2 定义结构体变量后,赋值成员变量
第一种是有序赋值(初始化定义)。
这样默认float为空。
【注1】这种样式是结构体变量的定义。相当于前面虽然已经定义了结构体变量,但是那某种程度上也是声明,而这里对结构体变量的值以定义的形式进行了初始化。
而这也就意味这样的赋值只能进行一次,如果再次进行就意味着重复定义,如下所示。

【注2】而且不能将结构体作为一个整体进行输入输出,也就是结构体变量一旦定义完成之后,不能当做被一个单独的变量,进行赋值如下图所示。

但是可以用下面的成员运算符进行赋值。
第二种是无序赋值,也就是键值对类型。
这种方式利用成员运算符,进行赋值。而这种也是分为结构体内部赋值和结构体外部赋值
这种赋值方式涉及结构体成员的引用。
引用方式为:结构体变量名.成员名。起哄“.”是成员运算符,也称为分量运算符,它在所有运算符中优先级最高。
下面这种是对成员变量赋值。即使是在未经过结构体变量初始化的情况下,也是可以赋值的。
下面这种则是初始化,也是定义,即利用成员运算符进行初始化,在结构体变量内部,在成员运算符前面加或者不加结构体变量名都是可以的。

- 如果成员本身又属于一个结构体变量类型,则要用若干个成员运算符,一级一级地找到最低一级的成员,并且只能对最低级的成员进行操作。
- 可以将一个结构体变量直接赋值给另一个具有相同结构的结构体变量。
- 对成员变量可以像普通变量一样进行各种运算。
- 可以引用成员的地址,也可以引用结构体变量的地址。结构体变量的地址主要用作函数参数,传递结构体的地址。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/15784.html