当前位置: 首页 > 文档资料 > C++大学教程 >

5.9 指针数组

优质
小牛编辑
120浏览
2023-12-01

数组可以包含指针,这种数据结构的常见用法是构成字符串数组,通常称为字符串数组(stringarray)。字符串数组中的每项都是字符串,但在 C++ 中,字符串实际上是第一个字符的指针。因此,字符串数组中的每项实际上是字符串中第一个字符的指针。下列字符串数组 suit 的声明可以表示一副牌:

char‘*suit[ 4 ] = { "Hearts","Diamonds","Clubs","Spades"};

声明的 suit[4] 部分表示4个元素的数组。声明的 char* 部分表示数组 suit 的每个元素是 char 类型的指针。数组中的4个值为 Hearts、Diamonds、Clubs 和Spades。每个值在内存中存放成比引号中的字符数多一个字符的 null 终上字符串。4个字符串长度分别为 7、9、6、7。尽管这些字符串好像是放在 suil 数组中,其实数组中只存放指针(如图 5.22)。每个指针指向对应字符串中的第一个字符。这样尽管:suit 数组是定长的,但可以访问任意长度的字符串,这是 C++ 强大的数据结构功能所带来的灵活性。

图 5.22 suit 数组的图形表示

suit 字符串可以放在双下标数组中,每一行表示一个 suit,每一列表示 suit 名的第一个字符、这种数据结构每一行应有固定列数,能够放下最长的字符串。因此,存放大量字符串而大部分字符串长度均比最长字符串短许多时,可能浪费很多内存空间。我们将在下一节用字符串数组帮助整理一副牌。