QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
11天前
查看: 1436|回复: 0
收起左侧

指向结构变量的指针

[复制链接]
发表于 2013-5-23 13:52:31 | 显示全部楼层 |阅读模式 来自: 中国广东深圳

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
$ u* I% O1 l( E6 C  y" k5 L, {
指向结构变量的指针
8 i0 r! ^+ o5 V" H6 h
. O- h* p$ j  `/ H 一个指针变量当用来指向一个结构变量时,称之为结构指针变量。结构指针变量中的值是所指向的结构变量的首地址。通过结构指针即可访问该结构变量,这与数组指针和函数指针的情况是相同的。! T  i  Z+ ~( L
  结构指针变量说明的一般形式为:' f5 n1 k) ^: x! j) B
      struct 结构名 *结构指针变量名4 T; ~5 M  ^. ]7 ?
  例如,在前面的例题中定义了stu这个结构,如要说明一个指向stu的指针变量pstu,可写为:
2 V% k+ J& U! n, |" k      struct stu *pstu;
/ L! L5 R& m) V! G) u6 |  当然也可在定义stu结构时同时说明pstu。与前面讨论的各类指针变量相同,结构指针变量也必须要先赋值后才能使用。 * _8 {8 G5 \# v9 Q) `  r8 O
  赋值是把结构变量的首地址赋予该指针变量,不能把结构名赋予该指针变量。如果boy是被说明为stu类型的结构变量,则:
& z3 I$ N- v6 ?6 }% t      pstu=&boy
" e3 x7 d/ w" o9 M  是正确的,而:  n$ i. N; i* j# Z5 s
      pstu=&stu
! u, P, |$ r% t: }9 g  是错误的。
( i' C- g) ]1 V  m3 N" N) I" k  结构名和结构变量是两个不同的概念,不能混淆。结构名只能表示一个结构形式,编译系统并不对它分配内存空间。只有当某变量被说明为这种类型的结构时,才对该变量分配存储空间。因此上面&stu这种写法是错误的,不可能去取一个结构名的首地址。有了结构指针变量,就能更方便地访问结构变量的各个成员。
+ D" g  D" D8 H1 h2 `  其访问的一般形式为:
3 J1 K, D% P) o, J      (*结构指针变量).成员名/ Z/ l9 _8 a+ w( n
  或为:4 `& `% _- N# G) ]+ G: {; ]
        结构指针变量->成员名: ?0 T" g: t: O, A
例如:5 l4 A5 E0 _, h- m. H4 j5 B
  (*pstu).num1 @  x4 P( z+ F, ~
或者:! ^  [( V( }8 `$ O  d
    pstu->num" R8 z, k! h, k3 D
  应该注意(*pstu)两侧的括号不可少,因为成员符“.”的优先级高于“*”。如去掉括号写作*pstu.num则等效于*(pstu.num),这样,意义就完全不对了。
& F1 _& a1 z9 E! O1 u  下面通过例子来说明结构指针变量的具体说明和使用方法。; P' {+ [0 b$ v+ x& E' A. o
struct stu
9 \* O- H2 C1 k; m    {
1 h- f* n1 r  j2 a6 ]- ~9 _      int num;; I4 a4 O3 D4 G/ _! C
      char *name;
, r9 c: l- c5 |, T      char sex;0 p2 L( S: g' s9 j2 Z) _. h, V
      float score;
: |& u; o: Q' }1 S    } boy1={102,"Zhang ping",'M',78.5},*pstu;' C8 k' Y. y" l+ t1 T/ c/ m
main()& x4 u) z/ }3 F+ h/ u6 B; C
{3 n7 n( i# L6 ~
    pstu=&boy1;
( |) }1 T" p* I: w9 r1 i2 Y; B    printf("Number=%d\nName=%s\n",boy1.num,boy1.name);+ ]. Z4 {. H2 S9 n) G  k
    printf("Sex=%c\nScore=%f\n\n",boy1.sex,boy1.score);
1 V1 n" O; V! n. c    printf("Number=%d\nName=%s\n",(*pstu).num,(*pstu).name);
9 V; r* G+ a. F9 y0 R! [; r    printf("Sex=%c\nScore=%f\n\n",(*pstu).sex,(*pstu).score);; N. x  z$ h: p2 X
    printf("Number=%d\nName=%s\n",pstu->num,pstu->name);. k5 z3 |: q9 k0 t% |
    printf("Sex=%c\nScore=%f\n\n",pstu->sex,pstu->score);
4 Y2 \5 T8 I7 r, i}5 @# o5 R- S! n$ v
* a( S1 y+ G- ~1 f# b9 O
    本例程序定义了一个结构stu,定义了stu类型结构变量boy1并作了初始化赋值,还定义了一个指向stu类型结构的指针变量pstu。在main函数中,pstu被赋予boy1的地址,因此pstu指向boy1。然后在printf语句内用三种形式输出boy1的各个成员值。从运行结果可以看出:! E2 o2 c4 t# P& L& i
  结构变量.成员名
* a& g% ]6 U2 q% C1 h1 H  (*结构指针变量).成员名( b( ?7 S3 A$ _& E* @" V* H/ Y
  结构指针变量->成员名
+ ^4 E. T. K9 _1 B这三种用于表示结构成员的形式是完全等效的。
, _! \  Z6 x; b' k6 @' r结合市场需求及目前热门技术开设以下精品课程:
) N4 |# O( u7 _: U2 Z' L, |    一、FPGA应用开发班
6 Z1 h6 z+ D3 b0 A; k5 e1 S5 _+ i* L    二、单片机编程培训班9 x9 p0 O4 C0 q. _5 z# u+ F3 T% t
    三、单片机综合开发班
: `/ {/ m1 M+ s: ]    四、Android驱动开发班
8 I( l! N1 K7 a* j+ I5 i    五、电子PCB设计培训班  V' [& v  m% C" i9 B
    六、嵌入式Linux驱动开发班5 k; J# }1 v" c  O
    七、嵌入式ARM+Linux实训班
( U: Z' Q1 p5 f5 F    八、单片机C语言项目开发班
) d9 L6 Z& @0 ?" w# J    九、嵌入式系统培训就业开发班! _$ R9 w+ v" Q, D6 P' W* H
    十、嵌入式cortex-m3+ucos开发实训班7 U! j) Y4 T( K1 C( a0 `
# I. I# F; L' Y( l5 g3 l( h
    培训部导师均为我公司一线实际项目开发工程师,具有多年实际开发经验,专长于众多个行业领域,能为学员提供全面的知识点,不仅让您了解基础知识,同时能让您接触到最热门的技术特点和应用技巧。通过实际的经验教学,更能让学员学习一个产品从设计、研制、调试到生产等方方面面的实际技能。
- _& b' s9 Z% d# U# c% l! q" W; _1 x# ?, h
    教学特色:
5 h5 W- {4 [( M2 n( Z' }# e4 R0 R    1、采用小班授课(6-8人)、保证教学质量;+ {# O+ S# T: S4 q4 X4 }
    2、由具有丰富开发经验的资深项目开发工程师、国际项目经理主讲;
! \0 Q6 W, X4 a5 k) S    3、理论联系实际、边理论边实践、学用结合以实践为主(实践课程占60%以上)手把手教学;: \  N  }1 A1 ^9 m2 }) J7 q8 B* n
    4、每个课程均有“项目开发课程”,并在资深工程师的指导下完成,让您真正具备项目开发经验;
& L1 r4 B, L: O8 l; s) n    5、长期为学员提供免费技术咨询;                                                         
8 e8 R! ]+ Y& R! f3 c6 [    6、我们的伯乐桥工程为您的就业提供保障,根据学员学习情况,帮助学员进行职业规划;
7 a9 f: G+ l' P; Y2 p" e) U+ q
  ^9 `6 R) z- {; K5 m6 I7 B! b深圳/郑州嵌入式、单片机、ARM、MIPS、FPGA、Android培训!
/ i$ E% J; L; X/ b2 t免费试听,满意后给您量身定制课程(包学会),快速提高您的技能!
4 o% t7 H! Z0 [1 U- X$ M) |教学特色:名师督学+工程师指导;项目案列解析+实际解决方案!
5 M) ^8 F: z4 H! G2 \' g7 M; U技术顾问:朱老师,QQ:2685896890      电话:18925216388
7 Q3 A/ x$ q0 E* s! Q% E5 i6 s欢迎加入技术交流QQ群:242530001
6 Z& u; ~9 v" V4 Q9 {4 Z; w
/ Z! |# Z: Q" ?) v! H/ [8 Y1 z9 a' O
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

快速回复 返回顶部 返回列表