首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基础知识 | 每日一面(14)

基础知识 | 每日一面(14)

作者头像
小林C语言
发布2019-12-23 16:44:19
2320
发布2019-12-23 16:44:19
举报

古代的剑客们与

对手相逢时,无

论对手多么强大,

明知不敌,也要亮出自己的剑!

读者:是否有自动比较结构的方法?

小林:没有。编译器没有简单的好办法实现结构比较 (即, 支持结构的 == 操作符),这也符合 C 的低层特性。简单的按字节比较会由于结构中没有用到的 “空洞” 中的随机数据而失败; 而按域比较在处理大结构时需要难以接受的大量重复代码。如果你需要比较两个结构, 你必须自己写函数按域比较。

读者:如何向接受结构参数的函数传入常数值?

小林:传统的 C 没有办法生成匿名结构值; 你必须使用临时结构变量或一个小的结构生成函数。C99 标准引入了 “复合常量” (compound literals); 复合常量的一种形式就可以允许结构常量。例如, 向假想 plotpoint() 函数传入一个坐标对常数, 可以调用plotpoint((struct point){1, 2});与 “指定初始值” (designated initializers) (C99 的另一个功能) 结合, 也可以用成员名称确定成员值:plotpoint((struct point){.x=1, .y=2});

有时候,正是那些意想不到之人,成就了无人能成之事。

——图灵

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 C语言入门到精通 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档