工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 4272|回复: 15

变态的C语言

[复制链接]
发表于 2009-5-28 20:32 | 显示全部楼层 |阅读模式
在CSDN看到变态C语言的文章,其中有一道这样的题:

  1. int (*pf)(void);
  2. int f(void)
  3. {

  4.    pf = &f; // 没问题
  5.    pf = ***f; // 取址?
  6.    pf(); // 函数指针可以调用?
  7.    (****pf)();  // 这又是什么?
  8.    (***************f)(); // 这个够变态了吧?
  9. }
复制代码

不是很明白,各位同学来探讨一下。
发表于 2009-5-28 21:01 | 显示全部楼层
看到都晕
回复

使用道具 举报

发表于 2009-5-28 23:07 | 显示全部楼层
是不是应该这样子看
***f;
--> *(*(*f))
*f是对f的地址的内容取值,*(*f)是对*f这个表达式表示的值的地址取内容。。。
回复

使用道具 举报

发表于 2009-5-28 23:09 | 显示全部楼层
只是*(*f)的值可能会是乱七八糟的值,如果当成函数指针来调用的话,结果未知。。
回复

使用道具 举报

发表于 2009-5-29 14:37 | 显示全部楼层
感觉是用指针乱指。

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

使用道具 举报

发表于 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 | 显示全部楼层
有什么用
回复

使用道具 举报

发表于 2009-5-31 20:22 | 显示全部楼层
当你知道他是什么意思的时候就没有用了.不过你知道这些表示什么意思吗?
回复

使用道具 举报

发表于 2009-6-20 00:29 | 显示全部楼层
路过。。。
回复

使用道具 举报

发表于 2009-8-12 21:02 | 显示全部楼层
学习一下..
回复

使用道具 举报

发表于 2009-8-29 20:50 | 显示全部楼层
编译通过不一定没问题 会出现运行时错误
回复

使用道具 举报

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

使用道具 举报

发表于 2011-1-5 21:44 | 显示全部楼层
回复 1# zaijzhgh


    妈的,这样有意思吗?

   那个SB会这样写代码啊?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2024-4-29 08:39

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表