- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C++语言结构体和指针
指针也可以指向一个结构体,定义的形式一般为:
struct 结构体名 *变量名;
下面是一个定义结构体指针的实例:
structstu{ //
structstu{ //定义结构体和结构体名字char *name; //姓名
intnum; //学号
int age; //年龄
char group; //所在小组float score; //成绩
}stu1 = { Tom, 12, 18, A, 136.5 }; //用已经定义的结构体类型定义结构体变量
//结构体指针
structstu *pstu = stu1; //用已经定义的结构体定义结构体指针变量
上述代码已经测试。
注意:定义已经命名的结构体指针的时候必须用已命名结构体类型定义的结构体变量的地址进行初始化。
注意:定义已经命名的结构体指针的时候必须用已命名结构体类型定义的结构体变量的地址进行初始化。
也可以在定义结构体的同时定义结构体指针:
structstu{ //
structstu{ //定义结构体和结构体名字char *name; //姓名
intnum; //学号
int age; //年龄
char group; //所在小组float score; //成绩
}stu1 = { Tom, 12, 18, A, 136.5 },*pstu = stu1; //用已经定义的结构体类型定义结构体变量
上述代码已经测试
注意,结构体变量名和数组名不同,数组名在表达式中会被转换为数组指针,而结构体变量名不会,无论在任何表达式中它表示的都是整个集合本身,要想取得结构体变量的地址,必
须在前面加 ,所以给 pstu 赋值只能写作:
struct stu *pstu = stu1;
struct stu *pstu = stu1;
而不能写作:
struct stu *pstu = stu1;
struct stu *pstu = stu1;
struct stu *pstu = stu; struct stu *pstu = stu;还应该注意,结构体和结构体变量是两个不同的概念:结构体是一种数据类型,是一种创建 变量的模板,编译器不会为它分配内存空间,就像 int、float、char 这些关键字本身不占用内存一样;结构体变量才包含实实在在的数据,才需要内存来存储。下面的写法是错误的, 不可能去取一个结构体名的地址,也不能将它赋值给其他变量:
struct stu *pstu = stu; struct stu *pstu = stu;
获取结构体成员
通过结构体指针可以获取结构体成员,一般形式为:
(*pointer).memberName
(*pointer).memberName
或者:
pointer-memberName
pointer-memberName
第一种写法中, . 的优先级高于 *,(*pointer) 两边的括号不能少。如果去掉括号写作
*pointer.memberName,那么就等效于*(pointer.numberName),这样意义就完全不对了。
第二种写法中,-是一个新的运算符,习惯称它为“箭头”,有了它,可以通过结构体指针
直接取得结构体成员;这也是-在 C 语言中的唯一用途。
上面的两种写法是等效的,我们通常采用后面的写法,这样更加直观。
【示例】结构体指针的使用。
{
{
structstu{ //定义结构体和结构体名字
char *name; //姓名intnum; //学号
int age; //年龄
char group; //所在小组float score; //成绩
}stu1 = { Tom, 12, 18, A, 136.5 },*pstu = stu1; //用已经定义的结构体类型定义结构体变量
//读取结构体成员的值
printf(%s 的学号是%d,年龄是%d,在%c 组,今年的成绩是%.1f!\n, (*pstu).name, (*pstu).num, (*pstu).age, (*pstu).group, (*pstu).score);
printf(%s 的学号是%d,年龄是%d,在%c 组,今年的成绩是%.1f!\n, pstu-name, pstu-num, pstu-age, pstu-group, pstu-score);
return 0;
}
【示例】结构体数组指针的使用。
structstu{ //
structstu{ //定义结构体和结构体名字char *name; //姓名
intnum; //学号
int age; //年龄
char group; //所在小组float score; //成绩
}stus[]={
{Zhou
您可能关注的文档
- 降膜蒸发器的设计.docx
- 降水施工分包合同.docx
- 酱油中氯化钠的测定.docx
- 酱油中氯化钠含量的测定.docx
- 郊区新城如何走向独立城市.docx
- 胶粉聚苯颗粒外墙保温系统施工流程.docx
- 焦化厂熄焦水处理技术方案.docx
- 焦急地等人写一段话.docx
- 焦虑状态护理常规.docx
- 焦作分析和总结.docx
- 2016-2017学年高中生物第二单元生态工程与生物安全第1章第2节我国的生态工程教案中图版选修3.doc
- 2022-2023学年小升初英语易错点专练06完形填空15篇(广州教科版专版含答案)2.docx
- 期中专项四年级英语下册(含答案)3.docx
- 期末卷(二)(含答案解析)-2022-2023学年高二历史期中期末复习备考必刷题(选择性必修一国家制度与社会治理).docx
- 第4课欧姆定律的应用第一讲欧姆定律实验探究(原卷版).docx
- Unit1限制性定语从句语法讲义人教版高一英语学生版213.docx
- 2023年宁波市初中毕业升学文化考试科学模拟卷(八).docx
- 5.3细胞呼吸的原理和应用课件高一上学期生物人教版必修12.pptx
- 高中政治更好发挥政府作用教学设计.docx
- 体悟民间故事中的幸福--五上《中国民间故事》导读课.docx
最近下载
- 中外幼儿教育名著导读课件:《母育学校》.pptx VIP
- 神木市作为资源型城市产业转型的思考与对策.docx
- 初中物理创新讲义——05.光现象与光的反射(改编版).pdf VIP
- (完整word版)建筑安全法律法规培训课件.pptx VIP
- 公司治理:基本原理及中国特色-姜付秀-第5章+机构投资者.pptx VIP
- 医疗器械经营质量管理制度及工作程序全版.pdf VIP
- 《GBT462-1989-纸和纸板水分的测定法》.pdf VIP
- 沥青拌合站安装与拆除方案.docx VIP
- 《人工智能一种现代方法》第四版习题答案.pdf VIP
- 一种单级隔离双向AC-DC变换器拓扑结构及其控制方法.pdf VIP
文档评论(0)