1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 《C陷阱和缺陷》中两个有趣的代码

《C陷阱和缺陷》中两个有趣的代码

时间:2021-04-26 05:45:19

相关推荐

《C陷阱和缺陷》中两个有趣的代码

如何以下两个代码?

//代码1

(*(void (*)())0)();

为了方便观察,首先我们应该把括号相互对应( *( void(*) () ) 0 ) (); void (*)()是一个函数指针类型,在平时写代码的过程我们应该也遇到过*(char*)p,对p强制为char*类型解引用 ,在qsort函数对冒泡实现中就用到,可以参考/RHQJA

那么这里(*(void (*)())0)();整体意思就是把0强制转化为无参,返回类型是void函数的地址,调用0地址处参数。

//代码2

void (*signal(int , void(*)(int)))(int);

为了方便观察,首先我们还是把括号相互对应void (*signal (int , void(*) (int) ))(int); 这里的void(*) (int)也是一个函数指针类型,signal是函数名,里面的(int,void(*) (int))是参数。所以以上代码是一次函数声明,声明signal函数第一个参数是int,第二个参数是函数指针,该指针指向的函数参数是int,返回类型是void,signal函数的返回类型是一个函数指针,该函数的函数指针指向的函数参数是int,返回类型是void。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。