|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
结构说明有原型法和类型别名法2种定义方法。6 `( x G c! E# E/ P
1)原型法: x$ b5 u+ r; @: |
(1)声明结构类型的同时定义变量名
6 o7 X5 b h, a( V1 }格式如下:
# S# j# t5 X9 e0 L1 z, v" N* h[存储类说明符] struct [结构原型名]
7 W9 z6 Q& X `) L. ^ {类型说明标识符[,标识符...];( A4 z6 T# W) K8 f0 x
; X" H+ a. G4 u- b, s6 s* Z类型说明标识符[,标识符...];
/ E t# S0 p0 {7 y1 H .1 B9 N( s5 J% h m( ?$ V( s7 |7 g7 l
.' f9 r) d1 P# t4 k4 N8 j
.
+ _0 q+ ~# K! A8 k4 K }标识符[={初值表}[,标识符[={初值表}]...]];
/ T% j) D0 [1 M5 p1 E: G4 C其中:存储类说明符有static、extern;结构原型名有结构名、*结构指针名。$ b3 g7 G! T' V3 |
(2)先声明结构类型再定义变量名
' b2 A! G P# K+ ], r* G* d( Z格式如下:0 M0 |7 k5 l% L
struct 结构原型名
0 J( {: u$ J$ A! [6 d: @6 T0 G {类型说明标识符[,标识符...];+ L: Y, @% f3 T
...% A9 h! h: v- ]5 B }4 Z
: n! H+ ?8 O# Q% I/ W
}
7 I n2 ~. z, c$ H6 t& h8 g" T; U [存储类说明符] struct 结构原型名
- ]! }0 M4 t6 z0 j$ T( r8 w标识符[={初值表}[,标识符[={初值表}]...];
6 ]3 Q- \% l) ]' F# {其中:存储类说明符有static、extern;结构原型有结构名、*结构指针名。; ]- A6 f+ a0 o' @; _, X0 P0 R
类型别名法
: p( G/ v6 Q! C% j先为结构原型名起别名,再用别名做定义说明。其格式如下:
: m2 ~7 z7 l& D z/ ^' t5 s7 Ptypedef struct[结构原型名]6 `# V$ u2 J4 `6 N# ^* l
{类型说明符 标识符[,标识符...];
% ^+ U( A' _+ E# d# B& b
/ u! K' {/ s" q1 ^9 C; K+ x- L类型说明符 标识符[,标识符...];
6 O! b" j7 D8 o a0 R8 y! T' K ...
/ ^) M6 I' X9 x* f }结构别名
. W6 E5 N5 m; Y6 T+ d[存储类说明符] 结构别名 标识符[={初值表}[,标识符[={初值表}]…]];9 C1 v+ j9 C; ?6 C5 \
其中:存储类说明符有static、extern;结构原型名有结构体、*结构指针名。结构别名习惯上用大写字符。[结构原型名]可用可不用,习惯上不用。因为一般来说,别名更具特色。
6 k9 t" g" h; w说明:% |/ H' ^7 K3 I4 g; n( R, d1 v
结构由各种数据类型的成员组成。成员之间没有次序关系,访问成员不按次序,而用结构成员名。
- I x' m3 J- N0 v4 p; N# D# u成员可以是各种简单变量类型个符合变量类型,也可以是数组;数组的元素也可以是结构,即结构和数组可以互为嵌套。
# \, U& o) R+ p2 b- b) H只有在定义性说明时,才可以整体性地位结构赋初值。在程序中,不能用语句整体性地址给结构赋值,但可以对程序员个别第进行赋值和去存操作。
5 |% A) h/ p) @- k2 {: C! S存取成员的方法有2种:结构名·成员名;结构指针名->成员名。前者是结构首地址加偏移法,后者是指针值加偏移法。只要结构指针指在结构的首地址上,二者便访问同义成员。8 ]9 B8 k/ g4 {4 u9 l0 W5 K
对结构只能进行2中运算:对结构成员的访问和取结构的地址(&结构名) |
|