代码克隆了乌龟

仔细看这段代码,它调用了happy_birthday()函数:

代码克隆了乌龟 - 图1

在C语言中,参数按值传递给函数。也就是说,当调用函数时,传入函数的值会赋给形参,因此这段代码等价于:

  1. turtle t = myrtle;

别忘了,在C语言中,当为结构赋值时,计算机会复制结构的值。当调用happy_birthday()函数时,形参t中放的是myrtle结构的副本,仿佛函数克隆了原来那只乌龟,于是函数中的代码虽然更新了乌龟的年龄,却不是原来的那只。

函数返回以后呢?形参t不见了,main()中剩下的代码使用了myrtle结构。而myrtle的值从来没有被代码修改过,它一直是一条完全独立的数据。

如果想把结构传给函数并在函数中更新它的值,该怎么做?

代码克隆了乌龟 - 图2