如何调用某个功能

时间:2015-11-06 19:10:26

标签: c arrays function pointers

我正在攻读C期中考试,对我来说有些不清楚。

讲座中有这段代码,但没有关于何时以及如何使用它的额外细节。

代码是:

void print_menu(char *options[], int dim);

如何使用什么参数调用该函数?

我知道如何调用这些功能

void print_menu(char *options, int dim);
void print_menu(char options[], int dim);

谢谢

2 个答案:

答案 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 **类型的第一个参数。