无法理解C函数调用

时间:2011-08-01 06:00:03

标签: c function

我有一个定义函数:

int foobar(char *ptr,...)

函数调用如下:

int (*fooptr) (char *,...) = foobar;

我无法理解该函数是如何调用的...... 提前致谢

5 个答案:

答案 0 :(得分:8)

这不是函数调用。

声明一个名为fooptr函数指针变量,它保存函数的地址。

要通过指针调用该函数,例如:

int return_value = (*fooptr)(char_ptr, x, y, z);

答案 1 :(得分:0)

这不是电话。它是fooptr声明

答案 2 :(得分:0)

不会使用您发布的代码调用该函数。第一行是函数声明,第二行是创建指向它的指针。要调用它,您必须使用foobar(myCharPtr[, other arguments])fooptr(myCharPtr[, other arguments])

答案 3 :(得分:0)

在您的示例中未调用该函数。它的地址存储在fooptr变量中,这是一个函数指针。如果您稍后在仍然指向foobar函数时调用该函数指针,它将调用foobar函数。

您可以将第二行写为:

// declare fooptr as a variable of type function pointer 
// taking (char*,...) and returning int
int (*fooptr) (char *,...);  
// take the address of foobar function and assign it to fooptr
fooptr = &foobar;

使其更清晰。

答案 4 :(得分:0)

这是varargs function,可以接收可变数量的参数(类似于printf)。你给出的第二行是赋值,而不是函数调用。