|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
结构说明有原型法和类型别名法2种定义方法。
3 S+ {# T+ c: f& T6 A6 L1)原型法
- h: s$ E1 ^6 X5 { r8 W. E1 X(1)声明结构类型的同时定义变量名 t( \# }) m! f7 q: l" Q7 F3 B' ^8 o
格式如下:
$ j9 d5 e, D2 {[存储类说明符] struct [结构原型名]
' j) n( w# K4 d, J {类型说明标识符[,标识符...];& l9 W6 S+ v6 E* O$ Z& ]
8 H2 D/ l% T- t类型说明标识符[,标识符...];9 b/ B4 L. x9 ?, R0 @
.
1 l5 y, `. N) [1 P% a .
Q" X& r' F9 y .- ?6 V; R% b& g3 _ [6 V2 a9 r6 C
}标识符[={初值表}[,标识符[={初值表}]...]];5 r) |/ w m$ c! j; `
其中:存储类说明符有static、extern;结构原型名有结构名、*结构指针名。9 a/ {5 I' P3 ?
(2)先声明结构类型再定义变量名9 Q) E4 l, H3 |( U& h( ~
格式如下:
. a7 n# B- s4 pstruct 结构原型名
( h! b' O1 h0 b4 r% Z {类型说明标识符[,标识符...];/ M9 h3 B1 z* O/ f7 n
.../ B1 Y/ Q! H1 U4 ?& @0 l0 Q* Y
- L* g2 Z+ W' B: T, ~8 x }1 k) J& X# S5 e- X/ w' \' H# I
[存储类说明符] struct 结构原型名) z' y' I$ C+ d2 G$ n1 z$ j
标识符[={初值表}[,标识符[={初值表}]...];6 b' o F0 s7 K2 n
其中:存储类说明符有static、extern;结构原型有结构名、*结构指针名。
6 B8 [. O* C. G9 J' L+ X$ X类型别名法4 c [, T; ?/ E9 H/ w9 O7 l
先为结构原型名起别名,再用别名做定义说明。其格式如下:- Y$ Q' g8 R3 u/ k2 K2 q0 y. L; f
typedef struct[结构原型名]
9 {/ `- Z7 c8 c) K. _$ m {类型说明符 标识符[,标识符...];
: o% T: g9 P, S% A7 M8 U8 X" P! m* C+ g0 \
类型说明符 标识符[,标识符...];5 P5 @2 r8 i [3 n# q& Z" h" o4 H- I
...7 r8 z+ o5 Q# Y; m" B
}结构别名
/ X/ @+ ], e: o5 u[存储类说明符] 结构别名 标识符[={初值表}[,标识符[={初值表}]…]];( H, ~4 R- |: P0 n' e
其中:存储类说明符有static、extern;结构原型名有结构体、*结构指针名。结构别名习惯上用大写字符。[结构原型名]可用可不用,习惯上不用。因为一般来说,别名更具特色。: ?; l" u' h: ^7 x; h( A/ M
说明:& U/ o4 @/ q4 q9 u9 o
结构由各种数据类型的成员组成。成员之间没有次序关系,访问成员不按次序,而用结构成员名。
8 `0 b+ b( ~* Z" O! V, |) t' ^4 i成员可以是各种简单变量类型个符合变量类型,也可以是数组;数组的元素也可以是结构,即结构和数组可以互为嵌套。
8 I( w" H8 [. O% U0 H7 L! `只有在定义性说明时,才可以整体性地位结构赋初值。在程序中,不能用语句整体性地址给结构赋值,但可以对程序员个别第进行赋值和去存操作。 }, b d) F4 w; M( Z1 N
存取成员的方法有2种:结构名·成员名;结构指针名->成员名。前者是结构首地址加偏移法,后者是指针值加偏移法。只要结构指针指在结构的首地址上,二者便访问同义成员。) ^+ ]) B, [$ F
对结构只能进行2中运算:对结构成员的访问和取结构的地址(&结构名) |
|