我正在攻读C期中考试,对我来说有些不清楚。
讲座中有这段代码,但没有关于何时以及如何使用它的额外细节。
代码是:
void print_menu(char *options[], int dim);
如何使用什么参数调用该函数?
我知道如何调用这些功能
void print_menu(char *options, int dim);
void print_menu(char options[], int dim);
谢谢
答案 0 :(得分:3)
char* options[]
相当于char** options
,因此将指针传递给指向char
的指针是正常的:
char** ptr = malloc(sizeof(char*) * 3);
ptr[0] = "entry1";
ptr[1] = "entry2";
ptr[2] = "entry3";
print_menu(ptr, 3);
free(ptr);
OTOH,数组在传递给函数时会衰减到指针,因此传递char*[N]
也没关系,其中N
是数组的大小:
char* array[3] = { "entry1", "entry2", "entry3" };
print_menu(array, 3);
答案 1 :(得分:3)
原型
void print_menu(char *options[], int dim);
相当于
void print_menu(char **options, int dim);
您需要传递char **
类型的第一个参数。