免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: scutan
打印 上一主题 下一主题

[函数] 关于指针与函数的几点小结 [复制链接]

论坛徽章:
0
41 [报告]
发表于 2007-09-20 20:56 |只看该作者
非常感谢,长见识了。
c中的指针太灵活了
如果楼主不介意的话,我想把此文转载了。。

论坛徽章:
0
42 [报告]
发表于 2007-09-21 11:48 |只看该作者

牛。。。

牛。。。
下面几句不大明白。。
能不能解释一下。。
      add = (unsigned long)f;
        ((void (*)(int))add)(10);
        (*(void (*)(int))add)(20);
第二个例子里面的代码。

论坛徽章:
0
43 [报告]
发表于 2007-09-21 13:37 |只看该作者
原帖由 ddvv 于 2007-9-19 23:48 发表
现在终于明白了。CSDN上面找到一边专门讲指针的文章,有点长,但是讲得通俗易懂。
推荐一下:
http://community.csdn.net/Expert/TopicView3.asp?id=5290998

下面是他的观点:
  “下面总结一下数组的数组名的问题。声明了一个数组TYPEarray[n],则数组名称array就有了两重含义:第一,它代表整个数组,它的类型是 TYPE[n];第二,它是一个指针,该指针的类型是TYPE*,该指针指向的类型是TYPE,也就是数组单元的类型,该指针指向的内存区就是数组第0号单元,该指针自己占有单独的内存区,注意它和数组第0号单元占据的内存区是不同的。该指针的值是不能修改的,即类似array++的表达式是错误的”
这句好象不对吧:
该指针自己占有单独的内存区,注意它和数组第0号单元占据的内存区是不同的

论坛徽章:
0
44 [报告]
发表于 2007-09-21 13:41 |只看该作者
原帖由 arnina 于 2007-9-21 13:37 发表

下面是他的观点:
  “下面总结一下数组的数组名的问题。声明了一个数组TYPEarray[n],则数组名称array就有了两重含义:第一,它代表整个数组,它的类型是 TYPE[n];第二,它是一个指针,该指针的类型是TY ...


嗯. 我也觉得这句话是不准确的, TYPEarray其实相当于是一个标记, 表示了某段内存区域.
相当于int i; 给这个变量分配了sizeof(int)长度的内存, 但是却不存在为 i 这个名字再进行什么分配之类的说法!

论坛徽章:
0
45 [报告]
发表于 2007-09-21 15:12 |只看该作者
这三个值的结果是一样的. 其实对于最后的那个*fun, 即使前面加上很多个*号, 其结果也不变, 即**fun, ***fun的结果都是一样的


学习了。

论坛徽章:
0
46 [报告]
发表于 2007-09-24 21:53 |只看该作者
学习了

论坛徽章:
0
47 [报告]
发表于 2007-10-01 11:56 |只看该作者
thx,学习了!!!!

论坛徽章:
0
48 [报告]
发表于 2007-10-16 16:08 |只看该作者

回复 #1 scutan 的帖子

支持原创

论坛徽章:
0
49 [报告]
发表于 2007-10-16 21:52 |只看该作者
赞!!!
ruibob 该用户已被删除
50 [报告]
发表于 2007-12-01 18:10 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP