C语言小问题--函数定义理解

来源:互联网 发布:天刀薛无泪捏脸数据 编辑:程序博客网 时间:2024/06/04 12:07

 一切为了学习  一切都为了向钱看齐 。。。。。。。。。。。。。。。                          No   BB   直接看问题  看下面定义的三个函数 有什么区别

1:   int  fun    (int,int ) 

2:   int  (*fun) (int ,int )

3:   int  * fun  (int,int )

4:typedef int  (*fun)  ()


第一个 :int  fun    (int,int ) 

很easy  就是简单的定义了 返回值为整形的函数   可能新手会问到 里面的形参怎么只有类型没有形参的变量名呢  这里顺道说一下 函数定义的形式吧 函数原型的一般形式有两种  

      1:函数类型   函数名 (参数类型1  参数名字 , 参数类型2 参数名字,..........) 

      2:函数类型    函数名  (参数类型1,参数类型2,................) 

     只是我们开始学的时候可能没注意到第二种形式 

 

第二个:int  (*fun) (int ,int )

这个 是定义了一个指向函数的指针  指向函数的指针是这样定义的 

类型名  (*指针变量名) (函数参数表列)  这里的类型名 指的是函数返回值的类型
 其实就是这个指针变量指向的那个函数的返回类型  指向的那个函数有两个形参   我们如何判断一个变量是否是指向函数的指针呢  首先看变量前面有没有* 如果有  并且 *和指针变量是用小括号括起来的  他就是指向函数指针的变量    这里指的注意的是 如果没有小括号 那么味道就会大变了  看第三个 


第三个 :int  * fun  (int,int )

这个和 第二个看起来 很相似  只是少了一个括号而已  但是这时候 fun就已经不再是指向函数的指针指针变量了  因为这个时候 *的优先级小于()的  所以函数相当于是int  * (fun (int ,int ))  这样就成了 声明了一个返回一个整形指针的函数了   fun自然也就不是指向函数的指针变量了


第四个 :typedef int  (*fun)  ()

typedef是定义了一个类型  这里定义的类型就是 fun,表示指向返回值为int型的函数指针,他可以用来声明一个或者多个函数指针 

比如fun fun1  ,fun2,

其实这样声明就等价于 

int (*fun1)( )    int (*fun2)   ( )

其实我也理解不透彻  哈哈






原创粉丝点击