返回介绍

如何更新结构

发布于 2024-10-10 23:21:28 字数 1817 浏览 0 评论 0 收藏 0

结构其实就是把一组绑在一起的变量当成一条数据处理。你已经学会了创建结构对象,并使用“点表示法”访问结构的值,那么怎样修改结构中已经存在的某个值呢?可以像修改变量那样修改字段:

既然如此,你应该能分析出下面这段代码做了什么。

#include <stdio.h>typedef struct { const char *name; const char *species; int age;} turtle;void happy_birthday(turtle t){ t.age = t.age + 1; printf("Happy Birthday %s! You are now %i years old!\n", t.name, t.age);}int main(){ turtle myrtle = {"Myrtle", "Leatherback sea turtle", 99}; happy_birthday(myrtle); printf("%s's age is now %i\n", myrtle.name, myrtle.age); return 0;}




















但奇怪的事情发生了……

试驾

你编译并运行了代码,结果如下。

奇怪的事情发生了。

这段代码创建了一个新的结构,然后把它传给了一个函数,按理说,函数会将结构中某个字段的值递增 1,但程序却……。

你知道 age 字段在 happy_birthday() 函数中更新了,因为 printf() 函数显示了递增以后 age 的值,但奇怪的是,虽然 happy_birthday() 更新了 age ,但程序返回 main() 函数以后,age 又变回了原来的值。

脑力风暴

代码的行为十分诡异,但你已经掌握了足够多的信息,应该能推测到底发生了什么,是吧?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文