2012-12-19 33 views
2

正如标题所说,我如何在C中使用函数的指针?我可以只取该函数名称的地址并将它传递给另一个函数;然后解除引用并调用它?如何在C中使用函数的指针? (No C++)

非常感谢。

+1

是........................ –

+0

这听起来不错,但现在看来似乎最好自己尝试一下,然后在出现问题时向我们提出具体问题。 –

+0

我真的很惊讶,你找不到和搜索SO或谷歌使用函数指针... – Mike

回答

8

如果你知道函数地址,那么是的。例如:

int add(int a, int b) 
{ 
    return a + b; 
} 

int sub(int a, int b) 
{ 
    return a - b; 
} 

int operation(int (*op)(int, int), int a, int b) 
{ 
    return op(a, b); 
} 

然后就这样称呼它:

printf("%d\n", operation(&add, 5, 3)); // 8 
printf("%d\n", operation(&sub, 5, 3)); // 2 

你甚至可以做一些阵列招数:

int op = 0; 
int (*my_pointer[2])(int, int) = 
{ 
    add, // op = 0 for add 
    sub // op = 1 for sub 
}; 
printf("%d\n", my_pointer[op](8, 2)); // 10 
+1

请注意,你实际上并不需要'&'时,通过函数;函数名称本身也可以充当函数指针。 –

1

以及准确地回答你的问题,是有规定在C中称为“函数指针”。

但你必须遵循一定的规则,

1)所有的功能你想使用函数指针必须有相同的返回类型调用。 2)你想使用函数指针调用的所有函数必须有相同的参数和参数类型。

例如,

INT加(INT,INT); int sub(int,int);

为上述两个功能可以编写函数指针作为,

INT(*操作)(INT,INT);

并且您可以按照Flavio Torbio所述使用它。

希望它可以帮助.....