|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
结构说明有原型法和类型别名法2种定义方法。
; I& J/ p+ [4 `2 B: _0 ~, O# s1)原型法; f8 S) _ ?1 G1 y1 }! y! u: z
(1)声明结构类型的同时定义变量名
; n' V3 t2 W. t格式如下:& s; U3 G T: `* U1 E. \/ p9 Q
[存储类说明符] struct [结构原型名]" \! }# E- r' d1 U
{类型说明标识符[,标识符...];
, W$ B- B! M, N% ~" l- x% x2 ]8 u5 f8 H+ F+ q
类型说明标识符[,标识符...];
' p1 N3 o' j* r$ [ G, W* O% H .
% r# s( C, {- g) P8 b8 C .
% `- x8 Y$ A# p; F' ^ .
: E" O. G. u7 Q9 C8 T3 x }标识符[={初值表}[,标识符[={初值表}]...]];# s: C% V3 Q q4 e% y! Q
其中:存储类说明符有static、extern;结构原型名有结构名、*结构指针名。# ]6 y5 r. O: |* l; [ ]4 ~
(2)先声明结构类型再定义变量名8 b5 z' J1 B- L2 r* L1 ]
格式如下:3 z3 k$ F+ e3 b% L" C+ O# R4 |
struct 结构原型名
% M0 p2 R# ?: E N& v {类型说明标识符[,标识符...];, |' b3 b. p+ P. [% E
...* A% h8 }& C+ t1 O# h0 _$ l; ]
( Z6 Y& [! O, q4 q( x$ A5 D }' R2 O5 v* Z+ k; _, J
[存储类说明符] struct 结构原型名- i1 j" q* C+ \( [2 s
标识符[={初值表}[,标识符[={初值表}]...];
4 R. E+ @$ ^) h其中:存储类说明符有static、extern;结构原型有结构名、*结构指针名。2 M4 ~0 p, _+ v3 i# N
类型别名法0 V/ ^1 x* D$ p. F8 W) T
先为结构原型名起别名,再用别名做定义说明。其格式如下:
! i9 C* F' ?& G% {9 V( v; s( C1 K: ktypedef struct[结构原型名]
; k5 V; l/ N& h% q5 z" L( m* ]( S {类型说明符 标识符[,标识符...];! f+ V/ _9 e9 b$ @" l
/ w" q6 U5 m! r类型说明符 标识符[,标识符...];( J& Q1 b5 Z l2 j) t: I! y
...
) \4 T, g, y8 s }结构别名
1 H3 s$ q7 N5 h B/ g$ G[存储类说明符] 结构别名 标识符[={初值表}[,标识符[={初值表}]…]];
- R3 X+ _5 e1 @* r* Y其中:存储类说明符有static、extern;结构原型名有结构体、*结构指针名。结构别名习惯上用大写字符。[结构原型名]可用可不用,习惯上不用。因为一般来说,别名更具特色。7 a) I( ~& A- n1 f
说明:
+ ]# R1 V* R9 B结构由各种数据类型的成员组成。成员之间没有次序关系,访问成员不按次序,而用结构成员名。! X5 y- J, n$ T0 _( s( g% x K
成员可以是各种简单变量类型个符合变量类型,也可以是数组;数组的元素也可以是结构,即结构和数组可以互为嵌套。. }* q- Z+ a8 K' c- W& S% D+ s- ~
只有在定义性说明时,才可以整体性地位结构赋初值。在程序中,不能用语句整体性地址给结构赋值,但可以对程序员个别第进行赋值和去存操作。# o$ U$ [5 E8 P; |
存取成员的方法有2种:结构名·成员名;结构指针名->成员名。前者是结构首地址加偏移法,后者是指针值加偏移法。只要结构指针指在结构的首地址上,二者便访问同义成员。
2 g$ a6 H5 z; H w/ T9 e! G) \/ a; h对结构只能进行2中运算:对结构成员的访问和取结构的地址(&结构名) |
|