c20-指向结构体类型数据的指针

c20-指向结构体类型数据的指针

ID:14082140

大小:65.50 KB

页数:5页

时间:2018-07-25

c20-指向结构体类型数据的指针_第1页
c20-指向结构体类型数据的指针_第2页
c20-指向结构体类型数据的指针_第3页
c20-指向结构体类型数据的指针_第4页
c20-指向结构体类型数据的指针_第5页
资源描述:

《c20-指向结构体类型数据的指针》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、指向结构体变量的指针变量的指针就是变量的地址一个结构体变量的指针就是该变量所占据内存空间的起始地址。可以把一个结构体变量的起始地址赋予一个指针变量,使该指针变量指向该结构体变量。一个指针变量当用来指向一个结构体变量时,称之为结构体指针变量。通过结构体指针变量即可访问相应的结构体变量。假如已经定义了如下结构体类型:structstu{intnum;charname[20];charsex;floatscore;};如要声明一个指向structstu类型变量的指针变量pstu,可写为:structstu*pstu;当然也可在定义结构体类型struc

2、tstu的同时定义pstu。如果boy1是structstu类型的变量,那么可以把boy1的地址赋给pstupstu=&boy1;通过结构体指针变量,能更方便地访问结构体变量的各个成员。其访问的一般形式为:(*结构体指针变量).成员名或为:结构体指针变量->成员名例如:(*pstu).num//boy1.num或者:pstu->num应该注意(*pstu)两侧的括号不可少,因为成员符“.”的优先级高于“*”。如去掉括号写作*pstu.num则等效于*(pstu.num),这样,意义就完全不对了。下面通过例子来说明结构体指针变量的应用。例题1st

3、ructstu{intnum;charname[20];charsex;floatscore;}boy1={102,"Zhangping",'M',78.5},*pstu;main(){pstu=&boy1;printf("Number=%dName=%s",boy1.num,boy1.name);printf("Sex=%cScore=%f",boy1.sex,boy1.score);printf("Number=%dName=%s",(*pstu).num,(*pstu).name);printf("Sex=%c

4、Score=%f",(*pstu).sex,(*pstu).score);printf("Number=%dName=%s",pstu->num,pstu->name);printf("Sex=%cScore=%f",pstu->sex,pstu->score);}本例程序定义了一个结构体类型structstu,定义了structstu类型变量boy1并作了初始化赋值,还定义了一个指向structstu类型结构体变量的指针变量pstu。在main函数中,pstu被赋予boy1的地址,因此pstu指向boy1。然后

5、用三种形式输出boy1的各个成员值。从运行结果可以看出:结构体变量.成员名(*结构体指针变量).成员名结构体指针变量->成员名这三种表示结构体变量成员的形式是完全等价的。指向结构体数组的指针如果结构体指针变量的值是某个结构体数组的首地址,这时结构体指针变量指向该结构体数组。如果结构体指针变量的值是某结构体数组元素的地址,这时结构体指针变量指向该元素。例题2指向结构体数组的指针的应用structstu{intnum;charname[20];charsex;floatscore;}boy[5]={{101,"Zhouping",'M',45},{

6、102,"Zhangping",'M',62.5},{103,"Lioufang",'F',92.5},{104,"Chengling",'F',87},{105,"Wangming",'M',58},};main(){structstu*ps;printf("NotNametttSextScoret");for(ps=boy;psnum,ps->name,ps->sex,ps->score);}在程序中,定义了structstu类型的外

7、部数组boy并作了初始化赋值。在main函数内定义ps为指向structstu类型变量的指针变量。在循环语句for的表达式1中,ps被赋予boy的首地址,循环5次,输出boy数组中各元素的各成员值。应该注意的是,一个结构体指针变量虽然可以用来访问结构体变量或结构体数组元素的成员,但是,不能使它指向一个成员。也就是说不允许取一个成员的地址来赋予它。因此,下面的赋值是错误的。ps=&boy[1].sex;错误赋值类型定义符typedef除了可以直接使用c提供的标准类型名和自己声明的结构体,共用体,指针,枚举类型外。还可以用typedef声明新的类型

8、名来代替已有的类型名。例如,有整型变量a,b,其声明如下:inta,b;int的英文全称为integer,为了增加程序的可读性,可以进行如下定义typ

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。