IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 函数指针的声明和使用 -> 正文阅读

[C++知识库]函数指针的声明和使用

C语言高级进阶

函数指针

学习内容

函数指针是指向函数的指针变量。 因此“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。如前所述,C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上是大体一致的。 函数指针有两个用途:调用函数和做函数的参数。

学习产出

函数指针的声明

void (*foo)();   //foo是一个函数指针变量,该函数指针指向的函数接受void类型参数,返回void类型值。

这个声明很像函数原型的声明,如果去掉第一对括号,看起来就像函数foo的原型,它接受void类型参数,返回void *类型值。括号让这个声明变成了一个名为foo的函数指针,*号表示这是一个指针。
如下图所示表示函数指针声明的各个部分:

下面是声明函数指针的其他一些例子:

int(*f1)(double);    //传入double,返回int
void (*f2)(char *);    //传入char指针,返回void
double * (*f3)(int,int);    //传入两个整型参数,返回double指针

对函数指针在命名约定上我们建议用fptr做前缀。
另外不要把返回值为指针的函数和函数指针搞混,下面f4是一个函数,它返回一个整型指针,而变量f5是一个返回值为整型的函数指针,变量f6是一个返回值为整型指针的函数指针。

int *f4();
int (*f5)();
int* (*f6)();

函数指针的使用
下面是使用函数指针的一个简单示例,示例函数接受一个整型参数并返回一个整型参数。

int (*fptr1)(int);

int square(int n)
{
    return n*n;
}

int main()
{
    int a = 6;
    fptr1 = square;
    printf("%d squared is %d\n", a, fptr1(a));
}

执行结果如下:

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-23 15:34:46  更:2021-12-23 15:35:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:45:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码