通过函数传递双指针问题的错误

Moh*_*bib 1 c c++ pointers double-pointer

我有一个二维数组,我想通过一个函数

char blendModeOptions[18][16]={"Normal","Darken","Multiply","Color Burn","Linear Burn","Lighten","Screen","Color Dodge","Linear Dodge","Overlay","Soft Light","Hard Light",
    "Vivid Light","Linear Light","Pin Light","Difference","Exclusion","Hue"};

blendMode = KIT_CreateSelectOption(blendModeOptions,18,&blendModeRect);
Run Code Online (Sandbox Code Playgroud)

该函数的声明为:

KIT_SelectOption * KIT_CreateSelectOption(char ** options,int size ,SDL_Rect * rect);
Run Code Online (Sandbox Code Playgroud)

我得到警告:

note: expected 'char **' but argument is of type 'char (*)[16]'
Run Code Online (Sandbox Code Playgroud)

在函数内部,我int KIT_AddOption(KIT_SelectOption *box, const char * option);通过此参数调用函数KIT_AddOption(box,options[i]);

当我在此代码行中时,我的程序崩溃了 KIT_AddOption

strcpy(opt->name,option);
Run Code Online (Sandbox Code Playgroud)

我已经尝试char * option[16]了,char ** option但没有用。

skl*_*ott 7

您需要将数组定义为指针数组,而不是2D char数组。

char *blendModeOptions[]={"Normal","Darken","Multiply","Color Burn","Linear Burn","Lighten","Screen","Color Dodge","Linear Dodge","Overlay","Soft Light","Hard Light",
"Vivid Light","Linear Light","Pin Light","Difference","Exclusion","Hue"};
Run Code Online (Sandbox Code Playgroud)