变态的C语言
在CSDN看到变态C语言的文章,其中有一道这样的题:int (*pf)(void);
int f(void)
{
pf = &f; // 没问题
pf = ***f; // 取址?
pf(); // 函数指针可以调用?
(****pf)();// 这又是什么?
(***************f)(); // 这个够变态了吧?
}
不是很明白,各位同学来探讨一下。 看到都晕 是不是应该这样子看
***f;
--> *(*(*f))
*f是对f的地址的内容取值,*(*f)是对*f这个表达式表示的值的地址取内容。。。 只是*(*f)的值可能会是乱七八糟的值,如果当成函数指针来调用的话,结果未知。。 感觉是用指针乱指。
PS:这样的代码除了考下相关知识外,貌似没实际价值吧? 哇靠,这么多指针啊 没必要写成那样啊 证明
因为:pf1 = f与pf2 = &f均可编译通过,且执行赋值语句后pf1 == pf2
故知f = &f 即: *f = f
所以: f = pf = *f = &f =... pf() == f() 有什么用 当你知道他是什么意思的时候就没有用了.不过你知道这些表示什么意思吗? 路过。。。 学习一下.. 编译通过不一定没问题 会出现运行时错误 看着头都晕了。。觉得好难啊。。最近在学习这方面的知识。。是关于linux的前段时间我的朋友想学习linux的知识。。刚好知道有个免费的专家讲座。。所以我们一起去听了。。
感觉很好。。时间是一月三号下午一点。地点是广州市越秀区东风西路140号东方金融大厦610。大家去看下吧。
我自己觉得挺好的 回复 1# zaijzhgh
妈的,这样有意思吗?
那个SB会这样写代码啊?
页:
[1]