一段C代码,可能对内存有作用

一段C代码,可能对内存有作用,c,function,pointers,C,Function,Pointers,几天前我踩到了下面的一段代码,我不确定它到底做了什么 int (*func) (); func = (int (*) () ) some_array_here; (int) (*func) (); 第一行看起来像一个整数指针,但是()使我感到不舒服。第二行看起来像演员,第三行,我真的不知道。你们能帮忙吗?谢谢第一行声明了一个函数指针。第二行将此处的某些数组转换为函数指针。第三行通过该指针调用函数调用 我猜上下文是某种shell编码示例(即执行用户注入的代码)。在现实生活中千万不要这样做。第一行

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

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

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

第一行声明了一个函数指针。第二行将
此处的某些数组
转换为函数指针。第三行通过该指针调用函数调用


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

第一行声明了一个函数指针。第二行将
此处的某些数组
转换为函数指针。第三行通过该指针调用函数调用


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

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

第二行将这里的一些数组投射到函数指针

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


请参阅此项:

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

第二行将这里的一些数组投射到函数指针

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


请参考以下内容:

当我在生产代码中看到它们时,除了第一个之外,其他所有内容都会让我非常难过:)是的,这确实是一个shell代码示例,但我认为这是一段通用的代码。那么这是不是少了一个把戏?我们不应该用func()之类的东西调用函数吗?或者在调用指针函数时有不同的理论?@Crone:如果
foo
是一个函数或函数指针,那么你可以用
(*foo)(
foo()
调用函数,它们是相同的。@Crone:不,上面从来没有实际用途(反正我想不出来);这是一个完全未定义的行为(考虑到在一个平台上,这是不可能的!)。当我在生产代码中看到它们时,除了第一个行为之外,其他所有行为都会让我非常难过:)是的,这确实是一个shell代码示例,但我认为这是一段具有普遍用途的代码。那么这是不是少了一个把戏?我们不应该用func()之类的东西调用函数吗?或者在调用指针函数时有不同的理论?@Crone:如果
foo
是一个函数或函数指针,那么你可以用
(*foo)(
foo()
调用函数,它们是相同的。@Crone:不,上面从来没有实际用途(反正我想不出来);这是完全未定义的行为(考虑到在a上,这是不可能的!)。。。在本例中,代码正在进行函数调用,这对大多数机器上的内存(以及现在存在的每台机器上,如果将寄存器计算为内存的话)都有影响。。。在本例中,代码正在进行函数调用,这对大多数机器上的内存(以及今天存在的每台机器上,如果将寄存器计算为内存的话)都有影响。