|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
结构说明有原型法和类型别名法2种定义方法。
( H( D, l$ \. m2 _3 B1)原型法
' q7 C' r* Y6 P" i(1)声明结构类型的同时定义变量名8 w0 s( c1 e: G) |5 q& Q5 @
格式如下:- f* W; x+ w" P+ E
[存储类说明符] struct [结构原型名]
; N/ `9 d6 `5 W& s& e {类型说明标识符[,标识符...];
. J4 R7 |1 ^5 I9 h5 Y! i* S p
8 q3 P# ~' W, ^2 B2 O; j类型说明标识符[,标识符...];: b9 J: h8 k5 [
.
9 z7 z$ l# C# O% \; M .
& N( e3 N+ x. z . v0 r" M0 V5 o% l; W
}标识符[={初值表}[,标识符[={初值表}]...]];+ ^1 |9 C( H# U+ U
其中:存储类说明符有static、extern;结构原型名有结构名、*结构指针名。7 a2 I% n" N- U3 q8 \6 |# ?* T
(2)先声明结构类型再定义变量名; F$ }8 i; q( h" f- x
格式如下:* u; E8 K# u0 @' \' ]; ?% w6 O. b
struct 结构原型名
7 v- n- Q+ K2 x; P {类型说明标识符[,标识符...];. \( X6 h! n2 ]* |$ v
...
, Y, U! c# i0 F* P ) z. H! `5 n$ w# k. J' i
}
3 K+ I% ?6 v% {( V' ^ [存储类说明符] struct 结构原型名 R/ h7 P9 l8 I4 o8 ?
标识符[={初值表}[,标识符[={初值表}]...];
& ~/ D6 v" W0 W$ I; V' n其中:存储类说明符有static、extern;结构原型有结构名、*结构指针名。+ V# r R/ M- V& p" Y
类型别名法2 ?6 _0 \0 I& D1 F3 Z' K) |
先为结构原型名起别名,再用别名做定义说明。其格式如下:
! a- ^. s/ {/ |+ r" C* i/ Etypedef struct[结构原型名]/ A5 S' Q W( ]8 _# X. S
{类型说明符 标识符[,标识符...];* l8 {5 R$ ?9 I
2 F, N9 @* h. b! z" z0 x
类型说明符 标识符[,标识符...];% ]& L$ ~& q$ I0 k* q1 r/ H
...
k$ [8 D0 x, G8 |0 e! ]3 V }结构别名, N* W7 N _7 ], j) e. g. l# ?! L
[存储类说明符] 结构别名 标识符[={初值表}[,标识符[={初值表}]…]];6 J. v$ e: [% f' _4 g9 g& h
其中:存储类说明符有static、extern;结构原型名有结构体、*结构指针名。结构别名习惯上用大写字符。[结构原型名]可用可不用,习惯上不用。因为一般来说,别名更具特色。
) E- l- u, K! r5 s# J/ ~8 O说明:0 O8 X7 u _. q" `$ _
结构由各种数据类型的成员组成。成员之间没有次序关系,访问成员不按次序,而用结构成员名。7 D) N% [& i. P2 X" E/ |5 y/ q
成员可以是各种简单变量类型个符合变量类型,也可以是数组;数组的元素也可以是结构,即结构和数组可以互为嵌套。6 Y2 }. v# }- l; T% M
只有在定义性说明时,才可以整体性地位结构赋初值。在程序中,不能用语句整体性地址给结构赋值,但可以对程序员个别第进行赋值和去存操作。
4 \ a$ u$ ^: d6 B. y8 x2 L: a. H存取成员的方法有2种:结构名·成员名;结构指针名->成员名。前者是结构首地址加偏移法,后者是指针值加偏移法。只要结构指针指在结构的首地址上,二者便访问同义成员。7 ~% r1 R; R( n. \! s, j
对结构只能进行2中运算:对结构成员的访问和取结构的地址(&结构名) |
|