Re: [问题] 函数指标

楼主: jono103 (不说对不起)   2015-03-22 16:35:12
小弟近日复习 函数指标,发现以前学的不够彻底(汗颜...)
GOOGLE了一下
如 http://www.programmer-club.com.tw/ShowSameTitleN/c/25059.html
以下借用之前的文章 恳请赐教 谢谢
※ 引述《ohya0524 (欧爷)》之铭言:
: 标题: [问题] 函数指标
: 时间: Thu Dec 29 22:04:46 2011
:
: 开发平台(Platform): C
:
:
: 问题(Question):
:
: 为啥四种写法都对呢?
: (某两行可以决定是否用注解替换)
:
: 程式码(Code):(请善用置底文网页, 记得排版)
:
: #include<stdio.h>
:
: int max(int x,int y){ return (x>y?x:y); }
:
: int main()
: {
: int (*fptr)(int,int);
: int a,b;
:
: fptr=max; //fptr=&max;
1. 自动转型! 请问是什么type自动转型成什么type?
想法:
max 自动转型成pointer
也就是说compiler 做了fptr=(int(*)(int,int))max;
2.是吗?
: scanf("%d %d",&a,&b);
: printf("max=%d",fptr(a,b)); //(*fptr)(a,b)
我知道fptr跟(*fptr)的prinf出来的内容是一样,
3.请问他们的type是否一样?
4.这里有哪一个也是自动转型吗?
: return 0;
: }
:
:
: 补充说明(Supplement):
:
: 我的疑问...
: fptr是个指标
: 那max不是应该用取址符号&取出位址吗?
:
:
作者: MOONRAKER (㊣牛鹤鳗毛人)   2015-03-22 18:36:00
问题1: max本来就是pointer,别人说过了。你说他是自动转型,那反过来问你,请问max本来的“型”是什么?
作者: Feis (永远睡不着 @@)   2015-03-22 19:33:00
max 本身不是 pointer
作者: wenyonba (射后不理很XX啊!!!!)   2015-03-22 20:29:00
楼上F哥讲的是不是就是像阵列名称的概念?就是阵列名称就是阵列名称,只是在Compiler里可以当常指标来用? 所以a[10]的话,a跟&a代表的东西是一样的
作者: Feis (永远睡不着 @@)   2015-03-22 20:32:00
a 跟 &a 也不一样. 这已经是考古题了. 函数比阵列更复杂尤其有了 C++..
作者: wenyonba (射后不理很XX啊!!!!)   2015-03-22 20:34:00
这些语言规格的东西实在好难懂啊~~XD很多都是像原Po,可能知道行为是什么,但是背后怎么做的不太知道~~
作者: MOONRAKER (㊣牛鹤鳗毛人)   2015-03-22 21:36:00
O~X(
楼主: jono103 (不说对不起)   2015-03-23 00:07:00
感谢各位大大回复 to M大:自动转型是根据推文Favonia得到to w大: 没错 知道行为是什么 但不知道语言规格..等

Links booklink

Contact Us: admin [ a t ] ucptt.com