7.3 结构数组

一个数组是一个数据类型,这种数组类型有一个名字,但是在这个数组中的单个元素只能通过已知的数字进行访问。比如,数组 arr 中的第五个元素可由 arr(5) 访问。注意,在这个数组中的所有元素都必须是同一类型(数字或字符)。那么,如果我们需要一个可以包含不同类型元素的数组呢?这时候就需要用到单元阵列和结构数组了。

一个单元阵列也是一种数据类型,也有一个名字,单个元素也只能通过已知的数字进行访问。但是这个单元阵列中元素的数据类型可以是不同的。比如,你可以有一个单元阵列包含数字、字符、甚至另一个数组。

相对地,一个结构也是一种数据类型,但它更加强大。它的每一个元素都有一个名字,这些元素被称为域。你可以通过结构名和域名来访问这些元素,用句号隔开。

7.3.1 创建结构的方法

创建结构有两种方法:

  1. 用赋值语句创建

  2. 用函数 struct 函数进行创建

7.3.1.1 用赋值语句创建结构

你可以用赋值语句一次创建一个结构域。每一次把数据赋值于一个域,这个域就会被自动创建。用下面的语句创建如图 7.6 所示的结构:


>;>; student.name = 'John Doe';

>;>; student.addr1 = '123 Main Street';

>;>; student.city = 'Anytown';

>;>; student.zip = '71211'

结果如下:


student =

  name: 'John Doe'

 addr1: '123 Main Street'

  city: 'Anytown'

   zip: '71211'

第二个 student 可以通过在结构名前加上一个下标的方式加入到这个结构中:


>;>; student(2).name = 'Jane Q. Public'

这时候,student 变成了一个 1x2 的结构数组:


student =

1x2 struct array with fields:

    name

   addr1

    city

这样,我们就成功创建了一个结构数组。是不是觉得操作非常简单直观呢?