|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
结构说明有原型法和类型别名法2种定义方法。
5 P/ D9 y7 E, C1)原型法
) w* n& E8 E$ S$ G0 {(1)声明结构类型的同时定义变量名4 C u6 {4 Y; P9 W1 y. H
格式如下:
; b. Y! c* R- _# r& Z[存储类说明符] struct [结构原型名]( ?/ W% T9 {: s1 D
{类型说明标识符[,标识符...];! D# p3 b, ]* V! P# h* |
3 _/ Q9 S# ~2 t2 \ N类型说明标识符[,标识符...];
0 b& [" i! b l+ m( ]+ X% v% F .
; ?! g* a7 N+ t; Z$ a5 S .
8 U4 L) [( G% a5 D5 \9 @) R .
9 \1 f( p: j' J5 H, g }标识符[={初值表}[,标识符[={初值表}]...]];
" C: _/ T( J$ w其中:存储类说明符有static、extern;结构原型名有结构名、*结构指针名。) @% @7 M4 e' j& Y, f
(2)先声明结构类型再定义变量名0 K% E$ r" H( D; K7 [3 O7 G7 B- z) `6 y
格式如下:
$ P6 [+ U$ v9 _* P) Fstruct 结构原型名
% ~3 _% H( }5 G" Z: s f6 O {类型说明标识符[,标识符...];1 p6 S: J( n. r: n7 O
...
9 x- w6 Q" W2 A
- p/ x6 T6 z" t# p! e" |6 y }
; s7 d. a0 t7 {( W9 E+ U [存储类说明符] struct 结构原型名
8 v; Z% U4 e: r- a8 T标识符[={初值表}[,标识符[={初值表}]...];% P6 j4 _4 a R+ y
其中:存储类说明符有static、extern;结构原型有结构名、*结构指针名。
( _: T: I+ m* D3 o+ O5 }类型别名法8 o; ?' g' b1 M/ `# M7 f _8 |
先为结构原型名起别名,再用别名做定义说明。其格式如下:7 g, e6 \- j* u7 k# \; s
typedef struct[结构原型名]
2 J. L/ d7 l6 F( z V, Q {类型说明符 标识符[,标识符...];7 M) s& Y* ]+ ]
* J: O- V6 |6 @. y
类型说明符 标识符[,标识符...];4 y+ o& E: `0 ?8 ?, P
...
! t- M" ]. r* x0 Y Z) u% c }结构别名5 u, @* F% z3 i8 H$ c ^( f
[存储类说明符] 结构别名 标识符[={初值表}[,标识符[={初值表}]…]];
7 j$ S3 @) H$ q; `, L) d4 N其中:存储类说明符有static、extern;结构原型名有结构体、*结构指针名。结构别名习惯上用大写字符。[结构原型名]可用可不用,习惯上不用。因为一般来说,别名更具特色。
& {( h, T& y+ ^说明:5 w3 @1 R7 u1 T! x. @& X
结构由各种数据类型的成员组成。成员之间没有次序关系,访问成员不按次序,而用结构成员名。
: i) S. y% H {2 t* {7 {; J( r成员可以是各种简单变量类型个符合变量类型,也可以是数组;数组的元素也可以是结构,即结构和数组可以互为嵌套。
2 l0 F- j% X$ I" s7 D+ m9 l只有在定义性说明时,才可以整体性地位结构赋初值。在程序中,不能用语句整体性地址给结构赋值,但可以对程序员个别第进行赋值和去存操作。
" y% J4 ^9 D3 `0 z e) x存取成员的方法有2种:结构名·成员名;结构指针名->成员名。前者是结构首地址加偏移法,后者是指针值加偏移法。只要结构指针指在结构的首地址上,二者便访问同义成员。
$ a) |. ^+ Q! M对结构只能进行2中运算:对结构成员的访问和取结构的地址(&结构名) |
|