创建字符串数组

字符串数组可能意味着以下几点:

  1. 元素为 char *s 的数组
  2. 一个数组,其元素是 chars 的数组

我们可以像这样创建一个字符指针数组:

char * string_array[] = {
    "foo",
    "bar",
    "baz"
};

请记住:当我们将字符串文字分配给 char *时,字符串本身会在只读内存中分配。但是,数组 string_array 被分配在读/写存储器中。这意味着我们可以修改数组中的指针,但是我们无法修改它们指向的字符串。

在 C 中,main argv(程序运行时传递的命令行参数数组)的参数是 char *char * argv[] 的数组。

我们还可以创建字符数组的数组。由于字符串是字符数组,因此字符串数组只是一个数组,其元素是字符数组:

char modifiable_string_array_literals[][4] = {
    "foo",
    "bar",
    "baz"
};

这相当于:

char modifiable_string_array[][4] = {
    {'f', 'o', 'o', '\0'},
    {'b', 'a', 'r', '\0'},
    {'b', 'a', 'z', '\0'}
};

请注意,我们将 4 指定为数组第二维的大小; 我们数组中的每个字符串实际上是 4 个字节,因为我们必须包含空终止字符。