【C++ 基础 11】 函数指针总结

在家学习的效率真是惨不忍睹。。

===========================

1 指针函数

int* f(int a, int b);

返回一个指向int类型的指针。

2 函数指针

2.1 声明

返回类型 (*函数名)(参数列表);

2.2 示例

int max(int a, int b) {  return a > b ? a : b;  }
int min(int a, int b) {  return a < b ? a : b;  }  

int (*f)(int, int); // 声明函数指针f,指向返回值类型为int,有两个参数类型都是int的函数  

void main()
{
    f = max; // 函数指针f指向求最大值的函数max
    int c = (*f)(1, 2);
    printf("The max value is %d \n", c);  // 2

    f = min; // 函数指针f指向求最小值的函数min
    c = (*f)(1, 2);
    printf("The min value is %d \n", c);  // 1

    return ;
}

3 typedef简化函数指针

一般我们会经常使用typedef来简化函数指针的调用。

3.1 声明

typedef 返回类型 (*函数指针类型名)(函参列表);

typedef是定义新的类型,定义这种类型为指向某种函数的指针。

3.2 示例

int max(int a, int b) {  return a > b ? a : b;  }
int min(int a, int b) {  return a < b ? a : b;  }  

//定义Func类型,Func是指向 返回int且参数为2个int的函数 的指针
typedef int (*Func)(int,int);

void main()
{
	Func pFunc = NULL; //声明变量pFunc
	pFunc = &max;      //或者pFunc = max两种写法
	int c = pFunc(1,2);
	printf("The max value is %d \n", c);  // 2
	return ;
}  

4 类成员函数指针

类成员包含静态和非静态函数,静态跟对象无关。

4.1 非静态成员函数声明

typedef 返回类型 (类名::*函数指针类型名)(函参列表);

4.2 静态成员函数声明(和一般函数指针一样)

typedef 返回类型 (*函数指针类型名)(函参列表);

4.3 示例

class A{
public:
	int max(int a, int b) {  return a > b ? a : b;  }
	static int min(int a, int b) {  return a < b ? a : b;  }
};

typedef int (A::*ClassFunc)(int,int);//类成员函数指针定义
typedef int (*StaticFunc)(int,int);  //静态函数指针定义(和普通的函数指针相同)

void main()
{
	/*
	 *  类成员函数指针
	 */
	ClassFunc pClassFunc = &A::max; //类成员函数必须加&符号,否则报错
	//写法1
	A a;
	int c = (a.*pClassFunc)(3,6);
	cout<<c<<endl; //6
	//写法2
	A* pA = &a;
	c = (pA->*pClassFunc)(3,6);
	cout<<c<<endl; //6

	/*
	 *  静态成员函数指针
	 */
	StaticFunc pStaticFucn = &A::min; //可加&,可不加
	c = pStaticFucn(3,6);
	cout<<c<<endl; //3
}  

【C++ 基础 11】 函数指针总结

时间: 2024-08-13 18:46:40

【C++ 基础 11】 函数指针总结的相关文章

iOS开发之c语言基础Lesson-11 函数指针 上课笔记 与 试题练习

main.m 文件 9 #import <Foundation/Foundation.h> 10 #import "Pointer.h" 11 ////////////////Lesson 11 函数指针 课堂笔记 与 习题练习//////////// 12 13 14 //函数指针:指向函数的指针叫做函数指针,用来存储函数的地址 15 //函数名代表函数的入口地址 16 17 18 //回调函数; 函数指针变量,存储对应的函数的地址 19 //给函数指针类型,取一个新的名

C++学习基础十七-- 函数指针

C++常用的函数指针 语法:返回值类型 (*函数名)(参数列表); 举例说明:int (*Func)(int m, int n); 用typedef简化函数指针的定义 例如: 1 typedef int (*Func)(int m, int n); 函数指针的初始化和赋值 1 // 1. 先声明对应函数指针类型的函数 2 int max(int num1, int num2) 3 { 4 return num1 > num2 ? num1 : num2; 5 } 6 7 //2. 初始化 8 F

day11基础代码——函数指针

// //  main.m //  Demo11 // //  Created by scjy on 15/10/29. //  Copyright © 2015年 lizhipeng. All rights reserved. // #import <Foundation/Foundation.h> //typedef int (*MAXV)(int ,int );//形参名可以省略 typedef int (*MAXV)(int x,int y);//相当于把int (*)(int x,i

C语言基础_函数指针

一.函数  实现某特定功能的代码 1)函数名与数组名一样是地址 2)函数指针 指向函数的指针 可以通过函数指针调用指向的函数 3)返回值类型 (*函数指针名)(参数类型)  = 函数名 int maxValue(int a,int b){ return a > b ? a : b; } int (*p)(int,int) = maxvalwe; printf("%d\n",p(3,4)); //用指针去调用函数 4) 示例代码 int maxValue(int a,int b){

python基础11 ---函数模块1

函数模块 一.函数模块的作用(为什么要有函数模块) 1.函数模块可以减少代码量 2.函数模块方便阅读 3.函数模块维护性强二.函数模块的本质以及调用方法 1.函数模块的本质就是一个.py结尾的文件,该文件内写入大量函数 2.必须用import来引用函数模块,在调用函数模块时必须以"模块名.函数名"来调用函数模块中的函数. 3.有的时候我们只需要用到模块中的某个函数,也可以用"from 模块名 improt 函数1,函数2"的方式来引用该模块,但只是一次引用,不建议使

Python 入门基础11 --函数基础4 迭代器、生成器、枚举类型

今日目录: 1.迭代器 2.可迭代对象 3.迭代器对象 4.for循环迭代器 5.生成器 6.枚举对象 一.迭代器: 循环反馈的容器(集合类型) 每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的初始值 l = [1, 2, 3] count = 0 while count<len(l): print(l[count]) count += 1 1.1 为什么要有迭代器? 字符串.列表.元组可以通过索引的方式迭代取出其中包含的元素 字典.集合.文件等类型,没有索引,只有通过不依赖索引的迭代方式

iOSDay09C语言函数指针

本次主要学习和理解函数指针 1.函数指针 1 void printValue(int number) { 2 printf("number = %d\n", number); 3 } 4 int main(int argc, const char * argv[]) { 5 void (*p1)(int) = NULL; 6 p1 = printValue; 7 p1(5); 8 } 1> 定义 代码第5行 函数类型:int (int, int) 函数指针的类型:int (*p)

第八天:C基础之内存分配与函数指针

虚拟内存自上而下分为 堆栈段,数据段,代码段 , 堆栈段分为堆区和栈区 ,栈区从上往下分配内存,堆区从下往上分配内存 .数据段分为静态区和全局区.两者的作用域不同.代码段分为只读区和代码区 .最后还有bss区现在还不涉及. 六个区域的定义如下: 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int number = 200; 5 6 int hello() 7 { 8 static int s = 400; 9 int n = 100

小猪猪C++笔记基础篇(六)参数传递、函数重载、函数指针、调试帮助

小猪猪C++笔记基础篇(六) ————参数传递.函数重载.函数指针.调试帮助 关键词:参数传递.函数重载.函数指针.调试帮助 因为一些事情以及自己的懒惰,大概有一个星期没有继续读书了,已经不行了,赶紧写一篇压压惊.把我文章抱走的同学留个言嘛. 函数在变成里面是一个非常重要的组成部分,那么这一部分我们先简单的介绍一下参数是如何传递进入函数,函数如何返回结果的.然后我们再来看看函数重载是个什么样的机制,最后在介绍一下所谓的函数指针到底是个什么东西.那么直接开始正题吧: 一.函数的参数传递 我们知道函