找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 2573|回复: 2

函数指针你知道,你知道函数引用?

[复制链接]
发表于 2014-2-22 00:42:33 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
无论任何书都会有这段内容:
指针和引用是双胞胎,前者是C而后者是C++的,两者底层实现完全一样(曾有一本很nb的书让我放弃这个看法),事实上也不可能不一样
引用的话必须绑定当前已存在的值或对象,定义时就要以该值或对象初始化,之后的修改均看做对原值或对象的操作。
函数指针你是知道的,他就是指向函数的指针,那函数引用呢?现在我提出函数引用这个定义,定义为必须用函数初始化的函数变量来对比一下,看此例
  1. #include "stdio.h"

  2. //声明类型
  3. typedef int (&MYGETCHAR1)(void);//函数指针形式1
  4. typedef int (*MYGETCHAR2)(void);//函数引用形式2

  5. int main(int argc, char* argv[])
  6. {
  7.         MYGETCHAR1 c=getchar;
  8.         MYGETCHAR2 d=getchar;

  9.         //定义变量
  10.         int (*func0)(void)=getchar;//函数指针形式2
  11.         int (&fund0)(void)=getchar;//函数引用形式2
  12.         int (*func1)(void)=NULL;//正确
  13.         int (&fund1)(void)=NULL;//编译错误
  14.         int (*func2)(void)=NULL;//正确
  15.         int (&fund2)(void)=NULL;//编译错误

  16.         return 0;
  17. }
复制代码



代码中MYGETCHAR1是函数引用而MYGETCHAR2是函数指针,和函数指针一样,引用指针也有2种形式
同样,函数引用也必须初始化
随意百度吧,如果你发现能搜到“函数引用”这个词,尽管来找我


回复

使用道具 举报

发表于 2020-6-22 11:25:09 | 显示全部楼层
引用形式可以在封装接口的时候,避免不必要的NULL检查,是个不错的东西。
回复 赞! 靠!

使用道具 举报

发表于 2020-6-24 20:53:50 | 显示全部楼层
的确很难搜到函数引用相关的资源,不过我在上大学期间就自己想到过这个问题,就自己尝试了函数引用写法,结果完全正确。
回复 赞! 靠!

使用道具 举报

本版积分规则

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2025-2-23 12:38 , Processed in 0.030097 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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