大约2d字符指针数组

时间:2010-12-13 06:40:57

标签: c

我在c book中找到了以下声明,任何人都可以解释它:

    char *dic[][40]={
"atlas", "A volume of maps",
"car", "a vehicle",
"telephone", "a communication device",
"", ""
    }

这里40意味着什么,即这是哪个维度?

4 个答案:

答案 0 :(得分:3)

这实际上是一种初始化字典的奇怪方式。

它是char*(零终止(\0)字符串的二维数组。)

尺寸为[行] [列]。

所以你有1行(由初始化程序确定)和40列字符串,

其中8个被初始化。

注意:你确定它不是char dic[][40](即最大长度为40的字符串列表)?

答案 1 :(得分:1)

dicchar*的二维数组;它的尺寸是1 x 40。

声明符中给出了40,并且初始化程序中只有一个数组这暗示了1。完整的初始化程序将有另一组括号,例如,

char *dic[][40] =
{
    {
        "atlas",     "A volume of maps",
        "car",       "a vehicle",
        "telephone", "a communication device",
         "",         ""
    }
};

使用额外的括号,隐含的维度为1更清楚。

二维数组中的每个元素都是char*类型的指针。前八个指针初始化为指向初始化程序中给出的八个字符串文字。

答案 2 :(得分:0)

我认为书中可能有错误,似乎他们想要字典 - 3D数组:


 char *dic[][40]={
            {"atlas", "A volume of maps"},
            {"car", "a vehicle"},
            {"telephone", "a communication device"},
            {"", ""}
        };

答案 3 :(得分:0)

代码中的40表示字符的最大长度(或字符串的总长度)为40。

char *dic[][40]视为指针数组。其中一个指针指向最多40个字符。