只要把“鱼”给函数就行了

现在,你只要把新的自定义数据传给函数就行了,而不必传递一大批零散的数据。

  1. /* 打印目录项 */
  2. void catalog(struct fish f)
  3. {
  4. ...
  5. }
  6. /* 打印贴在水缸上的标签 */
  7. void label(struct fish f)
  8. {
  9. ...
  10. }

是不是简单多了?现在函数只需接收一条数据,而且调用函数的代码也更易读了:

  1. struct fish snappy = {"Snappy", "Piranha", 69, 4};
  2. catalog(snappy);
  3. label(snappy);

以上便是定义自定义数据类型的方法,但怎么才能使用它们呢?函数如何读取结构中保存的某条数据呢?

只要把“鱼”给函数就行了 - 图1

只要把“鱼”给函数就行了 - 图2鱼的好处

把数据放在结构中传递有一个好处,就是修改结构的内容时,不必修改使用它的函数。比如要在fish中多加一个字段:

  1. struct fish {
  2. const char name;
  3. const char species;
  4. int teeth;
  5. int age;
  6. int favorite_music;
  7. };

catalog()label()知道有人会给它们一条fish,但却不知道fish中现在有了更多的数据,它们也不关心,只要fish有它们需要的所有字段就行了。

这就意味着,使用结构,不但代码更好读,而且能够更好地应对变化。