代码克隆了乌龟
仔细看这段代码,它调用了happy_birthday()
函数:
在C语言中,参数按值传递给函数。也就是说,当调用函数时,传入函数的值会赋给形参,因此这段代码等价于:
turtle t = myrtle;
别忘了,在C语言中,当为结构赋值时,计算机会复制结构的值。当调用happy_birthday()
函数时,形参t
中放的是myrtle结构的副本,仿佛函数克隆了原来那只乌龟,于是函数中的代码虽然更新了乌龟的年龄,却不是原来的那只。
函数返回以后呢?形参t
不见了,main()
中剩下的代码使用了myrtle
结构。而myrtle
的值从来没有被代码修改过,它一直是一条完全独立的数据。
如果想把结构传给函数并在函数中更新它的值,该怎么做?