C语言 指针函数 函数指针 什么区别联系?

网上科普有关“C语言 指针函数 函数指针 什么区别联系?”话题很是火热,小编也是针对C语言 指针函数 函数指针 什么区别联系?寻找了一些与之相关的一些信息进行分析,如果能碰巧解...

网上科普有关“C语言 指针函数 函数指针 什么区别联系?”话题很是火热,小编也是针对C语言 指针函数 函数指针 什么区别联系?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。

没觉得指针函数这个概念有什么大的意义。。。。可能其最大的意义就是拿过来和函数指针一起混淆初学者的视听吧。

指针函数指的是返回一个指针的函数,比如我们常见的gets(),strcpy(),strcat(),malloc()等等。如果单独把它当成一个新概念真的没有什么意义。这些函数除了返回一个指针之外没有任何共性,但是返回的指针又天差地远。

下面说说函数指针。

指针分为三种类型:对象指针,函数指针和void指针。

函数指针的声明形式是T (*p)(...),其中*p使用括号括起来的原因是函数类型解析的优先级高于指针的解析,故使用括号防止解析成上面的指针函数(其实这两个之间就相差了一对括号)。

函数指针可以绑定到与其返回值和参数类型都相同的函数上。比如:

int?foo(int,?double);?//?函数声明

int?(*bar)(int,?double)?=?foo;?//?函数指针

在上面的初始化中,写成&foo也是可以的。

函数指针的最大特点就在于,其不能做一元+-运算(当然也不能做+= -= ++ --等),且对其做一元*运算的结果还是其本身。例如:(接着上面的例子)

bar(1,1.0);

(*bar)(1,1.0);?//?两种情况等价

甚至你还可以这样:

(**************bar)(1,1.0);

依然是对的。

所以实际应用中一般采取类似函数调用的方式,这样更加自然。

刚刚去测试了一下,还有一个更加隐蔽的问题:

C中的函数可以采用使用原型或者不使用两种方式。(不使用原型被视为过时)

原型即在函数头中将参数类型及个数都声明,而不使用就是很简单的一对括号。例如:

int?foo();?//?非原型

int?bar(void);?//?原型

int?foo1(int);?//?原型

这有什么影响呢?看一看下面的一段代码:

int?foo(int?i){return?i;}?//?原型

int?foo1(double?c){return?(int)c;}?//?原型

int?bar(){return?1;}?//?非原型

int?main(void)

{

int?(*foobar)(int);?//?原型

int?(*barfoo)();?//?非原型

foobar?=?foo;

foobar?=?&foo;

foobar?=?bar;

foobar?=?foo1;?//?this

barfoo?=?foo;

barfoo?=?bar;

barfoo?=?foo1;

foobar(1);

(*foobar)(1);

(*************foobar)(1);

return?0;

}

我的编译器对this指的一行进行了警告,提醒指针类型不匹配。

我们可以看到,非原型的函数指针可绑定到任意的函数上,而带有原型的函数指针在绑定时可以起到更严格的类型限制。

容易忽略的一点是,不接受任何参数的函数(带原型)的声明方式是int foo(void);,不应该省略void,特别是在使用对应类型的函数指针时,如果省略void,那么错误的绑定也不会被警告。

我还注意到了一个现象:

int?foo(char);

int?(*bar)()?=?foo;

这段代码同样也给了警告。为什么呢?

因为在不使用原型的情况下,char,short,float等会被隐式提升到与其对应的更高级类型。

而在这个绑定中,bar是非原型,这时可能会进行整型提升,而foo带有原型,调用时不需要进行提升。这样就有可能引发错误。

以上就是函数指针使用过程中需要注意的一点。不过提醒LZ,函数指针使用过程中最好还是使用带有原型的函数指针。

关于“C语言 指针函数 函数指针 什么区别联系?”这个话题的介绍,今天小编就给大家分享完了,如果对你有所帮助请保持对本站的关注!

本文来自作者[admin]投稿,不代表法航号立场,如若转载,请注明出处:https://faithandyoung.com/cshi/202502-11968.html

(141)

文章推荐

  • 养生软文素材

    网上科普有关“养生软文素材”话题很是火热,小编也是针对养生软文素材寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。1.养生小知识软文养生小知识软文1.关于健康的小常识500字方法:1.有规律的生活:按时作息,早睡早起;2.注意讲卫生:(1).睡前

    2024年12月27日
    140
  • 动物的种类、名称和其特点

    网上科普有关“动物的种类、名称和其特点”话题很是火热,小编也是针对动物的种类、名称和其特点寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。1、草原陆龟:陆龟是生活在内陆草原地区的龟类。背甲长12~16厘米,宽10~14厘米。头部与四肢均具**;头小,顶部有对称

    2025年01月01日
    202
  • oppo手机进入语音模式怎么解除

    网上科普有关“oppo手机进入语音模式怎么解除”话题很是火热,小编也是针对oppo手机进入语音模式怎么解除寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。Breeno语音(小布)是OPPO手机的语音助手,小布具备目前市场上主流的语音助手软件所内置的功能。通过

    2025年02月11日
    144
  • 必看教程“微乐麻将开挂器通用版”(确实是有挂)-百度

    本篇文章给大家谈谈游戏挂热点,希望对各位有所帮助,不要忘了收藏本站喔。一、什么是游戏挂?1.打开手机桌面微信APP,进入微信主页。2.下拉微信主页,找到四川麻将小程序。注意:没有小程序利用的,可在上方搜索小程序。3.点击进入四川麻将小程序,选择右上角商城,点击打开。4.选择道

    2024年12月29日
    22
  • 必看教程“微信小麻将外卦神器下载安装”(确实是有挂)-百度

    本篇文章给大家谈谈游戏挂热点,希望对各位有所帮助,不要忘了收藏本站喔。一、什么是游戏挂?1.打开手机桌面微信APP,进入微信主页。2.下拉微信主页,找到四川麻将小程序。注意:没有小程序利用的,可在上方搜索小程序。3.点击进入四川麻将小程序,选择右上角商城,点击打开。4.选择道

    2024年12月29日
    26
  • 必看教程“天天2棋牌有挂吗 ”(确实是有挂)-百度

    本篇文章给大家谈谈游戏挂热点,希望对各位有所帮助,不要忘了收藏本站喔。一、什么是游戏挂?1.打开手机桌面微信APP,进入微信主页。2.下拉微信主页,找到四川麻将小程序。注意:没有小程序利用的,可在上方搜索小程序。3.点击进入四川麻将小程序,选择右上角商城,点击打开。4.选择道

    2024年12月29日
    20
  • 必看教程“新西部大厅在哪买”(确实是有挂)-百度

    本篇文章给大家谈谈游戏挂热点,希望对各位有所帮助,不要忘了收藏本站喔。一、什么是游戏挂?1.打开手机桌面微信APP,进入微信主页。2.下拉微信主页,找到四川麻将小程序。注意:没有小程序利用的,可在上方搜索小程序。3.点击进入四川麻将小程序,选择右上角商城,点击打开。4.选择道

    2024年12月29日
    23
  • 必看教程“手机拼十软件到底有没有挂”(确实是有挂)-百度

    本篇文章给大家谈谈游戏挂热点,希望对各位有所帮助,不要忘了收藏本站喔。一、什么是游戏挂?1.打开手机桌面微信APP,进入微信主页。2.下拉微信主页,找到四川麻将小程序。注意:没有小程序利用的,可在上方搜索小程序。3.点击进入四川麻将小程序,选择右上角商城,点击打开。4.选择道

    2024年12月30日
    22
  • 必看教程“德州透视辅助作弊”(确实是有挂)-百度

    本篇文章给大家谈谈游戏挂热点,希望对各位有所帮助,不要忘了收藏本站喔。一、什么是游戏挂?1.打开手机桌面微信APP,进入微信主页。2.下拉微信主页,找到四川麻将小程序。注意:没有小程序利用的,可在上方搜索小程序。3.点击进入四川麻将小程序,选择右上角商城,点击打开。4.选择道

    2024年12月30日
    25
  • 必看教程“斗棋开挂有人玩吗”(确实是有挂)-百度

    本篇文章给大家谈谈游戏挂热点,希望对各位有所帮助,不要忘了收藏本站喔。一、什么是游戏挂?1.打开手机桌面微信APP,进入微信主页。2.下拉微信主页,找到四川麻将小程序。注意:没有小程序利用的,可在上方搜索小程序。3.点击进入四川麻将小程序,选择右上角商城,点击打开。4.选择道

    2024年12月30日
    29

发表回复

本站作者后才能评论

评论列表(4条)

  • admin
    admin 2025年02月23日

    我是法航号的签约作者“admin”!

  • admin
    admin 2025年02月23日

    希望本篇文章《C语言 指针函数 函数指针 什么区别联系?》能对你有所帮助!

  • admin
    admin 2025年02月23日

    本站[法航号]内容主要涵盖:国足,欧洲杯,世界杯,篮球,欧冠,亚冠,英超,足球,综合体育

  • admin
    admin 2025年02月23日

    本文概览:网上科普有关“C语言 指针函数 函数指针 什么区别联系?”话题很是火热,小编也是针对C语言 指针函数 函数指针 什么区别联系?寻找了一些与之相关的一些信息进行分析,如果能碰巧解...

    联系我们

    邮件:法航号@sina.com

    工作时间:周一至周五,9:30-18:30,节假日休息

    关注我们