二维数组可用于存储相关字符串。
考虑以下语句,该语句声明一个包含3个元素的数组,每个元素包含15个字符:
char trip[3][15] = { "suitcase", "passport", "ticket" };
尽管字符串长度不同,但必须声明足够大的大小来容纳最长的字符串。此外,访问元素可能非常麻烦。
trip[0]指向"suitcase" 是个常见错误。相反,您必须将[0][0]处的元素视为“s”,将[2][3]处的元素视为“k”,依此类推。
处理相关字符串集合的更简单、更直观的方法是使用指针数组,如下程序所示:
char *trip[ ] = { "suitcase", "passport", "ticket" }; printf("请携带下列物品:\n"); for (int i = 0; i < 3; i++) { printf("%s\n", trip[ i ]); }
因为每个元素的长度都可能不同,所以字符串指针数组的结构比二维网格结构更加明晰
使用这种方法,字符串长度没有限制。更重要的是,可以通过指向每个字符串的第一个字符的指针来引用项。
请记住,像char*items[3]这样的声明;只为三个指针保留空间;这些指针正在引用实际的字符串。