我正在制作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},
};
为什么不能将这些组分配到此“名称”数组中? 编译器回复我错误...
谢谢!
答案 0 :(得分:2)
在group0
的初始化列表中使用name
时,它将decay to pointer to first element。这意味着对于表达式group0
,类型将为&group0[0]
,即char**
。
假设name
应该是指向组的指针数组,则需要相应地更改其类型:
char** name[10] = {
group0,
group1,
...