|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
结构说明有原型法和类型别名法2种定义方法。
; w, M7 u! i' U; }+ |- T+ b1)原型法 z$ z+ W# {" n; `5 l
(1)声明结构类型的同时定义变量名" R7 E, F* L7 S1 I0 A' q8 {
格式如下:- U' ]0 S* r" s) T4 v1 o
[存储类说明符] struct [结构原型名]1 ]2 d5 D. ^* S' R* Q
{类型说明标识符[,标识符...];
; P: \5 E1 b3 ^
; `" r: ?+ \5 w9 C, r7 z& l类型说明标识符[,标识符...];
5 `. U: t/ N7 ~1 d2 ]) f R. R5 @" A8 e .
+ f4 a! G7 \4 q$ Y- P, S/ B .4 E+ F# l0 i9 w$ y& \9 y
.' m7 u4 w I1 K4 D Z9 B3 g
}标识符[={初值表}[,标识符[={初值表}]...]];2 J! N& J; J- [1 D& b" ]9 @
其中:存储类说明符有static、extern;结构原型名有结构名、*结构指针名。
6 @4 {0 W+ D6 V(2)先声明结构类型再定义变量名8 V% ]4 G( Y% T9 r5 e
格式如下:. g4 q. l7 P1 @; V. ?
struct 结构原型名
& F( W, M( W1 [( r3 E {类型说明标识符[,标识符...];: k4 [2 ]1 A0 m8 W" t: Z; L
...
6 Q& ?! K5 S* a+ w ) Y7 i" Q8 D4 f2 ]: q
}
6 z9 `+ L8 B4 P$ g( C# I0 W [存储类说明符] struct 结构原型名; ^' F% q& u6 z- k! a
标识符[={初值表}[,标识符[={初值表}]...];4 j J% l, g9 k4 j: F
其中:存储类说明符有static、extern;结构原型有结构名、*结构指针名。
0 a" u( y- B# ]; d, ~3 L类型别名法
9 C2 l/ _$ Q/ n! S, M) {# M先为结构原型名起别名,再用别名做定义说明。其格式如下:: m. K' o8 l& S: }, l
typedef struct[结构原型名]0 g1 X! _( l1 h! \2 x
{类型说明符 标识符[,标识符...];3 v0 K9 Q2 \0 s" _ `; R
. B; \) k9 }( X( |9 b: E) K
类型说明符 标识符[,标识符...];
0 ?5 p$ k* b9 {7 I ...
% _0 z* `: {$ F( s) o" P! D }结构别名' F9 T9 i i3 o E9 K8 J
[存储类说明符] 结构别名 标识符[={初值表}[,标识符[={初值表}]…]];) d1 L" B$ t5 d ]/ M. H
其中:存储类说明符有static、extern;结构原型名有结构体、*结构指针名。结构别名习惯上用大写字符。[结构原型名]可用可不用,习惯上不用。因为一般来说,别名更具特色。
' ~% ^) q, u: X1 m& M! s9 |+ [8 k说明:' Y" ]# H0 w( D& Y5 Z
结构由各种数据类型的成员组成。成员之间没有次序关系,访问成员不按次序,而用结构成员名。! e/ ~- K' s1 B) }; _. k6 y: x
成员可以是各种简单变量类型个符合变量类型,也可以是数组;数组的元素也可以是结构,即结构和数组可以互为嵌套。
' ]) w8 `7 U" K* L' @只有在定义性说明时,才可以整体性地位结构赋初值。在程序中,不能用语句整体性地址给结构赋值,但可以对程序员个别第进行赋值和去存操作。) W; L4 K! r1 {3 W8 U9 s0 n7 f
存取成员的方法有2种:结构名·成员名;结构指针名->成员名。前者是结构首地址加偏移法,后者是指针值加偏移法。只要结构指针指在结构的首地址上,二者便访问同义成员。7 I6 K6 R6 l. Q/ ?- g8 z
对结构只能进行2中运算:对结构成员的访问和取结构的地址(&结构名) |
|