错误:初始化字符串时无法将'char **'转换为'char *'

时间:2018-08-15 06:29:50

标签: c pointers char

我正在制作C控制台菜单程序。 而且我对char *任务很执着。 有什么好的方法可以将char *分配给char **? 代码如下:

       char* group0[14]=
{
//group0:5
"Funciton0-1",
"Function0-2",
"Funciton0-3",
"Function0-4",
"Funciton0-5",
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
};

//... group0~group9 are similiar.

   char* group9[14]=
{
//group9:2
"Funciton9-1",
"Function9-2",
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
};

    char* name[10][14]=
{
{group0},
{group1},
{group2},
{group3},
{group4},
{group5},
{group6},
{group7},
{group8},
{group9},
};

为什么不能将这些组分配到此“名称”数组中? 编译器回复我错误...

谢谢!

1 个答案:

答案 0 :(得分:2)

group0的初始化列表中使用name时,它将decay to pointer to first element。这意味着对于表达式group0,类型将为&group0[0],即char**

假设name应该是指向组的指针数组,则需要相应地更改其类型:

char** name[10] = {
    group0,
    group1,
     ...