zaijzhgh 发表于 2009-5-28 20:32

变态的C语言

在CSDN看到变态C语言的文章,其中有一道这样的题:

int (*pf)(void);
int f(void)
{

   pf = &f; // 没问题
   pf = ***f; // 取址?
   pf(); // 函数指针可以调用?
   (****pf)();// 这又是什么?
   (***************f)(); // 这个够变态了吧?
}

不是很明白,各位同学来探讨一下。

Ike 发表于 2009-5-28 21:01

看到都晕

jinry 发表于 2009-5-28 23:07

是不是应该这样子看
***f;
--> *(*(*f))
*f是对f的地址的内容取值,*(*f)是对*f这个表达式表示的值的地址取内容。。。

jinry 发表于 2009-5-28 23:09

只是*(*f)的值可能会是乱七八糟的值,如果当成函数指针来调用的话,结果未知。。

iptton 发表于 2009-5-29 14:37

感觉是用指针乱指。

PS:这样的代码除了考下相关知识外,貌似没实际价值吧?

Monkeyzjj 发表于 2009-5-29 20:16

哇靠,这么多指针啊

心灵纯洁 发表于 2009-5-30 12:21

没必要写成那样啊

皇家救星 发表于 2009-5-30 22:14

证明
因为:pf1 = f与pf2 = &f均可编译通过,且执行赋值语句后pf1 == pf2
故知f = &f      即: *f = f

所以:    f = pf = *f = &f =...

皇家救星 发表于 2009-5-30 22:15

pf() == f()

一起同行 发表于 2009-5-31 20:01

有什么用

jinry 发表于 2009-5-31 20:22

当你知道他是什么意思的时候就没有用了.不过你知道这些表示什么意思吗?

Devilforever 发表于 2009-6-20 00:29

路过。。。

roaminlove 发表于 2009-8-12 21:02

学习一下..

monkey_d 发表于 2009-8-29 20:50

编译通过不一定没问题 会出现运行时错误

尚观小熊 发表于 2011-1-1 22:44

看着头都晕了。。觉得好难啊。。最近在学习这方面的知识。。是关于linux的前段时间我的朋友想学习linux的知识。。刚好知道有个免费的专家讲座。。所以我们一起去听了。。
感觉很好。。时间是一月三号下午一点。地点是广州市越秀区东风西路140号东方金融大厦610。大家去看下吧。
我自己觉得挺好的

蘑菇点点 发表于 2011-1-5 21:44

回复 1# zaijzhgh


    妈的,这样有意思吗?

   那个SB会这样写代码啊?
页: [1]
查看完整版本: 变态的C语言