|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
结构说明有原型法和类型别名法2种定义方法。
% \: s( N- a& f& S8 f2 S1)原型法) @0 @$ \) o% @/ F: g% W# |
(1)声明结构类型的同时定义变量名" p8 f7 I1 w2 r. j; \+ q; e: a/ s
格式如下:6 M h3 K0 [* A- F0 ]
[存储类说明符] struct [结构原型名]: K" O, j0 \4 I5 w& o1 {
{类型说明标识符[,标识符...];: s& l8 q( ?' |+ E5 l0 r3 \/ b
/ ~4 I! w, y& L; `+ ]
类型说明标识符[,标识符...];# o# {* @& I5 u0 F) e( m( v
.
+ T: t% x' h7 Y- w, m .4 C$ ^! n6 }9 v& m2 q* d7 k
.
+ f: m& e$ d3 q }标识符[={初值表}[,标识符[={初值表}]...]];1 F7 [7 M) c. i) w
其中:存储类说明符有static、extern;结构原型名有结构名、*结构指针名。
. L, ^0 k/ O! G0 P3 B1 g(2)先声明结构类型再定义变量名+ p; {0 ]* S O; M+ I
格式如下:' Q( l) f0 i/ Z* {; S$ E" K* Z$ Y
struct 结构原型名! @+ j' i3 y5 G
{类型说明标识符[,标识符...];0 F4 ?3 I" I/ a) S" I, z! p
...2 N1 Y9 q. E$ e% o6 J1 D* d* M
2 X6 B7 Y5 H5 b F; A- ^4 G }
3 b2 j t' Z7 @5 S. V O6 f [存储类说明符] struct 结构原型名: {9 }5 H0 `2 ~' s
标识符[={初值表}[,标识符[={初值表}]...];/ A! v1 P, L& l) g8 [. ^7 s, g4 M# o
其中:存储类说明符有static、extern;结构原型有结构名、*结构指针名。
* N) F: W: C; s# N* x, q. B: g类型别名法
; D& y+ ]1 t1 D# v" H先为结构原型名起别名,再用别名做定义说明。其格式如下:0 p+ K9 ?+ M, D6 i* g7 b0 F
typedef struct[结构原型名]
' q0 _) {) K5 H* H( j* P {类型说明符 标识符[,标识符...];
4 e/ j- h P1 c y
+ M" Q0 N- t) q( O# ?0 A类型说明符 标识符[,标识符...];7 x# V+ y- Y D2 k7 r
...
4 c% |" Q ^; B+ \* G }结构别名 U( O! g! w0 Z/ M* C2 E
[存储类说明符] 结构别名 标识符[={初值表}[,标识符[={初值表}]…]];
) ]7 e( ~0 Y+ V其中:存储类说明符有static、extern;结构原型名有结构体、*结构指针名。结构别名习惯上用大写字符。[结构原型名]可用可不用,习惯上不用。因为一般来说,别名更具特色。1 M5 D- n$ |+ ~3 N4 o
说明:) V; _; O2 x# K4 [5 a
结构由各种数据类型的成员组成。成员之间没有次序关系,访问成员不按次序,而用结构成员名。; V; b9 U% w4 Z: _: N
成员可以是各种简单变量类型个符合变量类型,也可以是数组;数组的元素也可以是结构,即结构和数组可以互为嵌套。
% k1 A4 T& F4 T8 }只有在定义性说明时,才可以整体性地位结构赋初值。在程序中,不能用语句整体性地址给结构赋值,但可以对程序员个别第进行赋值和去存操作。
: M5 r$ T0 A& x9 a存取成员的方法有2种:结构名·成员名;结构指针名->成员名。前者是结构首地址加偏移法,后者是指针值加偏移法。只要结构指针指在结构的首地址上,二者便访问同义成员。
1 y+ E& o; I5 j( \; q对结构只能进行2中运算:对结构成员的访问和取结构的地址(&结构名) |
|