- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言结构体(struct)常见使用方法.
??C语言结构体(struct)常见使用方法基本定义:结构体,通俗讲就像是打包封装,把一些有共同特征(比如同属于某一类事物的属性,往往是某种业务相关属性的聚合)的变量封装在内部,通过一定方法访问修改内部变量。结构体定义:第一种:只有结构体定义[cpp]?view plain?copy?struct?stuff{???char?job[20];???int?age;???float?height;??};??第二种:附加该结构体类型的“结构体变量”的初始化的结构体定义[cpp]?view plain?copy?//直接带变量名Huqinwei?struct?stuff{???char?job[20];???int?age;???float?height;??}Huqinwei;??也许初期看不习惯容易困惑,其实这就相当于:[cpp]?view plain?copy?struct?stuff{???char?job[20];???int?age;???float?height;??};??struct?stuff?Huqinwei;??第三种:如果该结构体你只用一个变量Huqinwei,而不再需要用[cpp]?view plain?copy?struct?stuff?yourname;??去定义第二个变量。那么,附加变量初始化的结构体定义还可进一步简化出第三种:[cpp]?view plain?copy?struct{???char?job[20];???int?age;???float?height;??}Huqinwei;??把结构体名称去掉,这样更简洁,不过也不能定义其他同结构体变量了——至少我现在没掌握这种方法。结构体变量及其内部成员变量的定义及访问:绕口吧?要分清结构体变量和结构体内部成员变量的概念。就像刚才的第二种提到的,结构体变量的声明可以用:[cpp]?view plain?copy?struct?stuff?yourname;??其成员变量的定义可以随声明进行:[cpp]?view plain?copy?struct?stuff?Huqinwei?=?{manager,30,185};??也可以考虑结构体之间的赋值:[cpp]?view plain?copy??struct?stuff?faker?=?Huqinwei;??//或?struct?stuff?faker2;?//??????faker2?=?faker;?打印,可见结构体的每一个成员变量一模一样?如果不使用上边两种方法,那么成员数组的操作会稍微麻烦(用for循环可能好点)[cpp]?view plain?copy?Huqinwei.job[0]?=?M;??Huqinwei.job[1]?=?a;??Huqinwei.age?=?27;??nbsp;Huqinwei.height?=?185;??结构体成员变量的访问除了可以借助符号.,还可以用-访问(下边会提)。引用(C++)、指针和数组:首先是引用和指针:[cpp]?view plain?copy?int?main()??{???struct?stuff?Huqinwei;????struct?stuff?ref?=?Huqinwei;???ref.age?=?100;???printf(Huqinwei.age?is?%d\n,Huqinwei.age);???printf(ref.age?is?%d\n,ref.age);????struct?stuff?*ptr?=?Huqinwei;???ptr-age?=?200;???printf(Huqinwei.age?is?%d\n,Huqinwei.age);???printf(ptr-age?is?%d\n,Huqinwei.age);??//既然都写了,把指针引用也加上吧??struct?stuff?*refToPtr?=?ptr;???refToPtr-age?=?300;???printf(Huqinwei.age?is?%d\n,Huqinwei.age);???printf(refToPtr-age?is?%d\n,refToPtr-age);????}??更正:之前给引用的初始化语句写错了,而且没注明引用是纯C中没有的东西(在这么个以C为幌子的博客中)。引用是C++特有的一个机制,必须靠编译器支撑,至于引用转换到C中本质是什么,我有个帖子写过结构体也不能免俗,必须有数组:[cpp]?view plain?copy?struct?test{???int?a[3];???int?b;??};??//对于数组和变量同时存在的情况,有如下定义方法:??struct?test?student[3]?=??????{{{66,77,55},
文档评论(0)