EDA365电子论坛网
标题:
结构说明
[打印本页]
作者:
ygcgsa
时间:
2016-7-13 15:07
标题:
结构说明
结构说明有原型法和类型别名法2种定义方法。
8 ^5 E. o& c9 w% e- g! n: [
1)原型法
4 U) p: j1 h; }, K+ C) H( H% U, T
(1)声明结构类型的同时定义变量名
4 d9 G0 {- P7 z- r/ x
格式如下:
) C0 W$ t d4 ] F, }5 |
[存储类说明符] struct [结构原型名]
: f! j' I9 C8 @" A) V& ?/ h- J. I
{类型说明标识符[,标识符...];
1 O9 S4 k; b4 L" p; D9 t4 z' Y9 W
( L# L y9 I* `5 ^! P
类型说明标识符[,标识符...];
7 O' d. D/ a, q1 r: } o6 k1 Z
.
4 H5 Y3 ?' k: F) {* Z- L4 d
.
( ~2 E! O3 ^9 \$ k2 l" \
.
7 ^7 F* \* c* K p
}标识符[={初值表}[,标识符[={初值表}]...]];
. d( \! Z5 _' k6 b
其中:存储类说明符有static、extern;结构原型名有结构名、*结构指针名。
# ?+ C- O7 @0 O T" e R
(2)先声明结构类型再定义变量名
+ d) ]: y5 X5 R& N6 `7 y7 d% t% E% Q1 r
格式如下:
$ w2 ^# [, S( F5 l8 x
struct 结构原型名
! f. _' W: F1 }. n6 C
{类型说明标识符[,标识符...];
( @% k( {+ ^; `6 e) S3 Q% ^
...
1 K) n1 d% e: c/ K
. F8 m0 m& F: f$ ~; S8 Q; O
}
3 G0 o8 _" Y5 Q0 d
[存储类说明符] struct 结构原型名
+ z$ V" B5 h: l# M+ {, l6 W+ C* O
标识符[={初值表}[,标识符[={初值表}]...];
& h7 u$ q2 q9 j/ Y; K2 \" b* o
其中:存储类说明符有static、extern;结构原型有结构名、*结构指针名。
% L( Q' M% w4 c8 L$ P* R
类型别名法
* t; n& c# V* U0 q3 l/ j1 }
先为结构原型名起别名,再用别名做定义说明。其格式如下:
8 m, B6 h0 h, Z# b* K- l' x& ?$ q
typedef struct[结构原型名]
! e! p* F) u! W+ N- a9 _ a M: L
{类型说明符 标识符[,标识符...];
. U8 h" U6 V, N2 D6 H& v
' t) |3 {! F) E4 g; b
类型说明符 标识符[,标识符...];
+ Y! ]' a# C) \# a1 S
...
* o" J6 z6 `; ^- t
}结构别名
3 W$ f4 f$ _' w5 B
[存储类说明符] 结构别名 标识符[={初值表}[,标识符[={初值表}]…]];
! m- T( A6 h3 N) M, s. i
其中:存储类说明符有static、extern;结构原型名有结构体、*结构指针名。结构别名习惯上用大写字符。[结构原型名]可用可不用,习惯上不用。因为一般来说,别名更具特色。
; n# o, M7 i, H- `
说明:
5 Y: t1 M! P5 v- p
结构由各种数据类型的成员组成。成员之间没有次序关系,访问成员不按次序,而用结构成员名。
+ `1 O6 ^+ B8 @* G
成员可以是各种简单变量类型个符合变量类型,也可以是数组;数组的元素也可以是结构,即结构和数组可以互为嵌套。
% o p" ^1 p! Y% b
只有在定义性说明时,才可以整体性地位结构赋初值。在程序中,不能用语句整体性地址给结构赋值,但可以对程序员个别第进行赋值和去存操作。
# l/ t' s8 [' {
存取成员的方法有2种:结构名·成员名;结构指针名->成员名。前者是结构首地址加偏移法,后者是指针值加偏移法。只要结构指针指在结构的首地址上,二者便访问同义成员。
$ Z* {1 }+ ^! G+ P& [& r+ j
对结构只能进行2中运算:对结构成员的访问和取结构的地址(&结构名)
作者:
Titianyeer
时间:
2016-7-14 14:17
支持楼主!谢谢分享!
( M/ z0 u* V! W" r
作者:
10929390
时间:
2016-7-14 14:48
感谢楼主分享!!!
3 d3 ^9 X6 [5 u- X: z
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2