一段C代码,可能与内存有关

时间:2012-03-04 18:04:25

标签: c function pointers

我几天前踩了下面的代码,我不确定它到底是做什么的。

int (*func) ();
func = (int (*) () ) some_array_here;
(int) (*func) ();

第一行看起来像一个整数指针但是()s错误了。第二行看起来像演员和第三行,我真的不知道。你们能帮忙吗?感谢

2 个答案:

答案 0 :(得分:9)

第一行声明一个函数指针。第二行将some_array_here强制转换为函数指针。第三行通过该指针调用函数调用。

我的猜测是上下文是某种shell编码示例(即执行用户注入的代码)。你不应该在现实生活中这样做。

答案 1 :(得分:1)

在第一行中,func是指向函数的指针,其返回类型为int

第二行将some_array_here转换为函数指针。

第3行是使用func指针的函数调用。

请参阅:http://c-faq.com/decl/spiral.anderson.html