用结构创建结构化数据类型

如果需要把一批数据打包成一样东西,就可以使用结构(struct)。struct是structured data type(结构化数据类型)的缩写。有了结构,就可以像下面这样把不同类型的数据写在一起,封装成一个新的大数据类型:

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

用结构创建结构化数据类型 - 图1

这段代码会创建一个新的自定义数据类型,它由一批其他数据组成。事实上,结构与数组有些相似,除了以下两点:

  • 结构的大小固定。

  • 结构中的数据都有名字。

定义新结构以后,如何用它来创建数据?和新建数组很像,你只需要保证每条数据按照它们在结构中定义的顺序出现即可:

用结构创建结构化数据类型 - 图2

这里没有蠢问题

问:喂,等等,什么是const char *来着?

const char *用来保存你不想修改的字符串,也就是字符串字面值。

问:fish结构会保存字符串吗?

:在这个例子中不会,这里的fish结构中只保存了字符串指针,也就是字符串的地址,字符串保存在存储器中其他位置。

问:但还是可以把整个字符串保存在结构中吧?

:对,只要把字符串定义成字符数组就行了,像char name[20];