<强> 1。结构体的声明强>
<强>首先呢,结构是一些值的集合,这些值称为成员变量,结构的每个成员变量可以是不同类型的变量。强>
一般的声明
<代码> struct书 { char[100]名称;//书名 浮动价格;//价格 }b1、b2;//全局变量 结构体书b3;//全局变量//并且上面两种表示方式是相同的意思 int main () { 结构体书b5;//这里的变量叫做局部变量 返回0; }代码>
特殊的声明
<代码>结构 { int; 字符b; 浮动c;//此处未完全声明变量,缺少了结构体标签//这种叫做匿名结构体类型 }b; 结构体 { int; 字符b; 浮动c; }* ps;//结构体的指针变量,用来存储地址 代码> >之前<>强! !但是ps=x;
这种写法是不合法的,编译器认为这两种不同的写法是两个不同的类型。
强><强> 2。结构体的自引用强>
<强> 此处,我们用一个例子来讲述我们来表述一个数据结构链表中的节点 强>
<代码>结构节点 { int数据; 结构节点*下; }; int main () { 结构节点={3零}; 结构节点b={5,和一个}; printf (" % d \ n”, b.data); printf (" % p \ n " b.next); 系统(“暂停”); 返回0; } 代码> >之前
<强>下面的地址便是结构体中b指向的地址,即一个的地址。强>
<人力资源/><强> ! ! !很重要的一点,当结构体自引用的时候,不可写成匿名结构体类型。强>
例题如下
<代码>类型定义结构体 { int数据; 节点*下; }节点;代码><强>在此处编译会出现错误,是由于节点在末尾端才定义,但在结构体内部便已经被调用,这样是非法的。强>
正确的写法如下:
<代码> typedef结构节点 { int数据; 结构节点*下; }节点;代码><强> 3。结构体变量的定义和初始化强>
简单结构体的初始化
<代码>结构点 { int x; int y; }; int main () { struct点p2={1,2};//定义一个局部变量p2并且给其进行赋值 printf (" % d % d \ n”, p2。x, p2.y); 系统(“暂停”); 返回0; }代码>结构体嵌套的初始化
<代码>结构点 { int x; int y; }; 结构节点 { int数据; struct点p; 结构节点*下; }; int main () { 结构节点n1={零}5 {1,2}; 结构节点n2={8 {3、4}, n1}; printf (" % d \ n”, n2.next→数据); printf (" % d % d \ n”, n2.next→p。x, n2.next→p.y); printf (" % p \ n " n2.next); 系统(“暂停”); 返回0; }代码>
c语言中结构体的声明,自引用,以及变量的定义和初始化