|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
结构说明有原型法和类型别名法2种定义方法。 q: K0 o" M% @0 H$ ~
1)原型法
1 t) u* R7 x' ]7 U4 B/ ?(1)声明结构类型的同时定义变量名- C* h! g- K* X9 r; h
格式如下:
- |, y( T }) h- k M[存储类说明符] struct [结构原型名]
" v! C* @( _6 I. Z5 i% L/ ` {类型说明标识符[,标识符...];4 A% \6 o x' G2 R. w
5 p$ D' h, p- B" u/ L: Y! ?1 V8 U
类型说明标识符[,标识符...];' d, G/ T8 b2 [2 U5 {! W0 B/ o
.
6 M; P3 I E3 i# F .
: h1 g. U2 e' T* r$ t4 l .
8 r0 y! C* Q, ?4 }4 z }标识符[={初值表}[,标识符[={初值表}]...]];, V+ W" B8 \8 y4 h4 |/ A" L
其中:存储类说明符有static、extern;结构原型名有结构名、*结构指针名。
, T5 @' ?- o. U* k) m' {(2)先声明结构类型再定义变量名
% C) j& ^1 X [( g4 L; P. P) _$ H3 V格式如下:4 Z# Q0 P' \8 \9 w! d
struct 结构原型名4 d& p, i! ~+ ^; G
{类型说明标识符[,标识符...];
3 X# v) t: E! R; H ...
7 Y6 J5 a' g0 k& g+ U3 R & J6 _, V- ^3 Y2 k4 [" E1 B1 G6 X
}
+ j$ O. d- a* S3 k6 V. O Z [存储类说明符] struct 结构原型名2 c7 X5 v7 @! {2 r6 O3 Y1 W$ ~
标识符[={初值表}[,标识符[={初值表}]...];. {7 V2 [; P5 v% m( v' p; U0 i
其中:存储类说明符有static、extern;结构原型有结构名、*结构指针名。+ H6 I# t( K7 o; Q$ i e
类型别名法- r' K2 Y7 c7 U' Q
先为结构原型名起别名,再用别名做定义说明。其格式如下:2 _3 B" f/ N. V
typedef struct[结构原型名]3 q2 J5 O! ]6 y+ `% p, I& K
{类型说明符 标识符[,标识符...];5 t4 q& U8 Q! K( A4 E M1 F, p
: n$ N3 ^4 N: Y: _2 l类型说明符 标识符[,标识符...]; {+ C5 J& |' n' `
..." u* i4 G- Z+ N% ^! O
}结构别名; \ Y* u; K5 y8 w& Y& @$ j9 T
[存储类说明符] 结构别名 标识符[={初值表}[,标识符[={初值表}]…]];
) [0 A9 g; g; b! f3 w其中:存储类说明符有static、extern;结构原型名有结构体、*结构指针名。结构别名习惯上用大写字符。[结构原型名]可用可不用,习惯上不用。因为一般来说,别名更具特色。- A9 ~& s$ C5 s7 r
说明:( i( H- A8 }( `/ h: V1 ]# h
结构由各种数据类型的成员组成。成员之间没有次序关系,访问成员不按次序,而用结构成员名。& N* y; B% v f" A2 O3 `- }
成员可以是各种简单变量类型个符合变量类型,也可以是数组;数组的元素也可以是结构,即结构和数组可以互为嵌套。! Q0 [) ?4 \9 Q3 g5 Z, U
只有在定义性说明时,才可以整体性地位结构赋初值。在程序中,不能用语句整体性地址给结构赋值,但可以对程序员个别第进行赋值和去存操作。* g9 F, f* ]/ e3 k: g4 u# ?9 C
存取成员的方法有2种:结构名·成员名;结构指针名->成员名。前者是结构首地址加偏移法,后者是指针值加偏移法。只要结构指针指在结构的首地址上,二者便访问同义成员。/ d" ? K$ e) w. {2 C( L! b
对结构只能进行2中运算:对结构成员的访问和取结构的地址(&结构名) |
|