字符串数组可能意味着两件事:
元素为char *s的数组
其元素的数组的数组char小号
我们可以像这样创建一个字符指针数组:
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个字节,因为我们必须包含以null结尾的字符。