|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
结构说明有原型法和类型别名法2种定义方法。; x$ m/ \( @! L7 s! p
1)原型法
1 P7 A$ d# W4 ^( k4 _7 V(1)声明结构类型的同时定义变量名
& F# u& T0 i( b格式如下:" J% N, l- n0 W% u' q3 a
[存储类说明符] struct [结构原型名]. |! l( B" \; v8 C8 @, s4 g9 e3 a
{类型说明标识符[,标识符...];
* G' F$ r0 s1 L6 n% o+ ^
( V) H' K* X4 V4 o类型说明标识符[,标识符...];8 N0 f5 ?, b0 Q" p, H
.. X: i, l: X: o
.
+ ] j1 }8 B# p Y1 Y; z .% o' d Q. r# S( L1 N
}标识符[={初值表}[,标识符[={初值表}]...]];
% {, w7 s9 T& ~5 r# \' r其中:存储类说明符有static、extern;结构原型名有结构名、*结构指针名。" a: ~# n8 _ Y: t, q# P9 a
(2)先声明结构类型再定义变量名+ R9 c( q: |$ I% W) `+ f2 p
格式如下:% N2 V5 @0 ~- p) n2 l) h8 k
struct 结构原型名
8 m+ A8 [1 X2 H {类型说明标识符[,标识符...];
3 v Z. q1 O# j" q0 i, m ...% \( p* \$ u( L! Z4 Z, z1 O
" [# o; Z6 ~2 j# S. U. q. T }# U: p! A1 e" Y; n6 v
[存储类说明符] struct 结构原型名0 y( y. f8 |" G' Y
标识符[={初值表}[,标识符[={初值表}]...];9 _: b0 W3 o6 L5 `- U6 c7 m3 L( P% |
其中:存储类说明符有static、extern;结构原型有结构名、*结构指针名。; q0 S# A& q7 @* Q( ^' `) u0 M: e
类型别名法
$ ]% l' x3 o: J) Y2 ?2 x+ v先为结构原型名起别名,再用别名做定义说明。其格式如下:5 T3 r4 @5 g# |/ E
typedef struct[结构原型名]' M+ ]4 n) U5 ]
{类型说明符 标识符[,标识符...];: c1 U$ o6 J. X+ D2 I" x+ ^
: @3 q M; i+ N3 V' s2 N
类型说明符 标识符[,标识符...];
. h/ l5 Y1 E; A1 r' p( M7 |% F ...2 L4 K/ M* b* e8 Q9 g0 w% l/ c. H
}结构别名7 B4 s/ R( {7 _% F) _
[存储类说明符] 结构别名 标识符[={初值表}[,标识符[={初值表}]…]];
/ G% p. L# |$ `) v) h+ l" {其中:存储类说明符有static、extern;结构原型名有结构体、*结构指针名。结构别名习惯上用大写字符。[结构原型名]可用可不用,习惯上不用。因为一般来说,别名更具特色。2 {# |9 \3 s) o% U. u% a5 I* V
说明:
7 Y% Y2 W" u2 m1 B结构由各种数据类型的成员组成。成员之间没有次序关系,访问成员不按次序,而用结构成员名。4 a& G# l" ]5 J9 x# o; I" G' ~* F
成员可以是各种简单变量类型个符合变量类型,也可以是数组;数组的元素也可以是结构,即结构和数组可以互为嵌套。
4 S! e" y# f# C" N0 ~只有在定义性说明时,才可以整体性地位结构赋初值。在程序中,不能用语句整体性地址给结构赋值,但可以对程序员个别第进行赋值和去存操作。
% l5 g$ ]( g, W7 g; e存取成员的方法有2种:结构名·成员名;结构指针名->成员名。前者是结构首地址加偏移法,后者是指针值加偏移法。只要结构指针指在结构的首地址上,二者便访问同义成员。
( N/ e/ C( D7 k) l3 b! B对结构只能进行2中运算:对结构成员的访问和取结构的地址(&结构名) |
|