|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
结构说明有原型法和类型别名法2种定义方法。
% c" E4 C% ^& c, ?6 K; y1)原型法
" [" ^) ?' G' {- x, O2 D(1)声明结构类型的同时定义变量名
: R0 ^* ?1 Q- \: k+ V2 {; H格式如下:
+ S/ H: y% }% w! q' J! a[存储类说明符] struct [结构原型名]: R- C5 t& U( l2 f( Z- A
{类型说明标识符[,标识符...];
2 i0 e. m- S+ I0 l& K/ ]7 T" U6 Z
t" Z; v+ |3 K' H& t- O% _& E类型说明标识符[,标识符...];
' Q$ j5 M* ]( v" i .1 ~5 q9 c: Z( ?# f2 n* n5 w8 q
.
6 `& F2 H& ?: q+ p+ a; z .4 E- y! o3 j+ L ?0 N; N p8 w- j
}标识符[={初值表}[,标识符[={初值表}]...]];4 z# y+ G6 m% l- m: v
其中:存储类说明符有static、extern;结构原型名有结构名、*结构指针名。5 h; ^2 H& t5 g5 k+ f6 M
(2)先声明结构类型再定义变量名
! ], w( Y0 i6 s$ g j. F& }2 {- E9 D格式如下:
) c" C$ ~* E6 L0 n* M& L, E4 \struct 结构原型名
( N& v/ r; L% E4 x! k, Z {类型说明标识符[,标识符...];7 T4 h: v) Z, E- l# V r) I
..." {0 c/ j1 E0 y+ D4 k
1 k$ W5 w( _6 b" S3 D- b% K
}+ A" T4 x; g7 h' P* l' x# D
[存储类说明符] struct 结构原型名# [' P% R/ Q0 m0 j
标识符[={初值表}[,标识符[={初值表}]...];- F1 ]. f2 ~' p8 U
其中:存储类说明符有static、extern;结构原型有结构名、*结构指针名。
" h; E8 A) v& f/ J! n' V类型别名法* ] d( F" W" O* q$ x! t
先为结构原型名起别名,再用别名做定义说明。其格式如下:6 c4 s9 P8 {# ~: s
typedef struct[结构原型名]
* ~) R+ k8 B6 D+ K7 a3 o {类型说明符 标识符[,标识符...];
b% U. y% @6 J' w
& C1 u4 i. o! P% h类型说明符 标识符[,标识符...];. E- a/ R9 G0 _7 u( Y7 x
.... V4 M& P8 b, ~0 S4 R
}结构别名
) w9 }) v- H- B[存储类说明符] 结构别名 标识符[={初值表}[,标识符[={初值表}]…]];
* `6 ~% `/ B) Y7 m( p$ I其中:存储类说明符有static、extern;结构原型名有结构体、*结构指针名。结构别名习惯上用大写字符。[结构原型名]可用可不用,习惯上不用。因为一般来说,别名更具特色。
) \( a" G! ^3 H6 ?' n9 I/ s8 l) R说明:* @3 h. o+ C4 d! { i
结构由各种数据类型的成员组成。成员之间没有次序关系,访问成员不按次序,而用结构成员名。% x: a, z/ L# O) n. y
成员可以是各种简单变量类型个符合变量类型,也可以是数组;数组的元素也可以是结构,即结构和数组可以互为嵌套。
# p/ m' l) j$ R- w7 l6 v只有在定义性说明时,才可以整体性地位结构赋初值。在程序中,不能用语句整体性地址给结构赋值,但可以对程序员个别第进行赋值和去存操作。
, k! F+ y6 @' ?8 @/ O存取成员的方法有2种:结构名·成员名;结构指针名->成员名。前者是结构首地址加偏移法,后者是指针值加偏移法。只要结构指针指在结构的首地址上,二者便访问同义成员。& N+ f' t( Q; |) Q
对结构只能进行2中运算:对结构成员的访问和取结构的地址(&结构名) |
|