契约型常量、函数指针、回调函数

契约性const对象的定义未使用const关键字,但被看做是一个const对象,例如:

void ReadValue(const int& num)
{
    cout << num;
}
int main(void)
{
    int n = 0;
    ReadValue(n);  //此时n被看作一个契约性常量
}

函数指针是指向函数的指针,声明如下:

void (*funcp) (int x);
void (*funcp) (int);  //两种形式都可以

函数指针的小例子:

//函数指针
#include <stdio.h>

void (*funcp)();
void FileFunc();
void EditFunc();

int main()
{
    funcp = FileFunc;
    (*funcp)();
    funcp = EditFunc;
    (*funcp)();

    return 0;
}

void FileFunc()
{
    printf("FileFunc\n");
}

void EditFunc()
{
    printf("EditFunc\n");
}

回调函数是有用户自己定义而操作系统调用的一类函数,回调函数一般通过函数指针来实现的。

//回调函数
#include <stdio.h>
//定义回调函数
void FileFunc(int time)
{
    printf("FileFunc--%d\n", time);
}
//回调函数的实现
void callback(int times, void(*print)(int))
{
    int i;
    for(i = 0; i < times; i++)
    {
        print(i);
    }
}

void main(void)
{
    callback(2, FileFunc);
}

时间: 2024-08-29 09:10:35

契约型常量、函数指针、回调函数的相关文章

c语言(函数指针,回调函数)

//  main.m //  1-28随堂笔记 //讲师: 小辉 //笔者: 王学文 //  Created by lanouhn on 15/1/28. //  Copyright (c) 2015年 lanouhn. All rights reserved. // 函数指针, 回调函数 #import <Foundation/Foundation.h> struct student { char name[20]; float score; int age; }; typedef stru

新手,对函数,函数指针,回调函数, 函数指针作为函数的返回值和block的一些见解

很多初学者,学c语言时,看到函数都觉得难,我也是,一开始觉得函数太难了,后来慢慢就理解了 第一:函数 在c语言中最简单的函数一般有四种: 1, 无返回值, 无参数. 2, 无返回值,有参数. 3, 有返回值,无参数. 4, 有返回值,有参数 1, 无返无参  定义方式:      void 函数名(); 一般不怎么用这种形式的函数,可用来输出,打印 void functionOne() { printf("无返回值,无参数"); // 没有返回值不能写return } int main

10 函数指针 回调函数

?.函数指针定义 ?.函数回调 三.动态排序 四.函数返回值是函数指针

函数指针和指针函数和回调函数以及函数指针数组

1.首先来说,函数指针 就是函数的指针 2.指针函数,就是指针的函数.也就是返回值是个指针 一.指针 [1]指针  1--- 指针变量:用于存放地址量的变量  2--- 地址常量   int a = 20:   int *p = &a: [2]运算符  1--- &  2--- *(指针解引用):通过地址获取其内容  3--- []:只针对于指针运算.指针加单位长度,后取*运算. 二.函数 [1]指针函数 [2]函数指针 [3]函数指针数组  本质:数组,由多个元素组成  元素:函数指针类

Java/Android中的函数调用&amp;回调函数&amp;自定义回调函数

在做Android自定义控件时遇到要自定义回调函数的问题,想想自己还暂时没有那么精深的技术,赶紧返过头回来再重新研究Java中回调函数的问题.然而不幸的是,网上太多杂乱的帖子和博客都是转来转去,而且都是那一篇"C中的回调函数.....指针.....java....",一点看不出来是自己的思路,估计都是哪哪哪抄来的!(呵呵,要么就是吐槽对了,要么就是我水平太烂读不懂还妄加评论)还有一些很不错的文章,我会在最后参考中加上链接,大家可以看看. 那么来开始我们的正题--什么是回调函数? 我们一

C++中类成员函数作为回调函数

注:与tr1::function对象结合使用,能获得更好的效果,详情见http://blog.csdn.net/this_capslock/article/details/38564719 回调函数是基于C编程的Windows SDK的技术,不是针对C++的,程序员可以将一个C函数直接作为回调函数,但是如果试图直接使用C++的成员函数作为回调函数将发生错误,甚至编译就不能通过. 普通的C++成员函数都隐含了一个传递函数作为参数,亦即“this”指针,C++通过传递一个指向自身的指针给其成员函数从

函数指针,函数指针数组,函数返回值为函数指针

函数的名字就是函数的首地址:定义函数指针; int (*p)(int ) p为函数指针变量名字,int 为函数的返回值类型为int型:(int)为函数的形参类型为int型, 注:因为优先级所以要用(*p),否则就会p先和后面的()结合为int*p(int),意思就变为p(int)函数的返回值为int* 注:main2()函数中   int (*p[])(int ,int )  为一维数组,下面写错了, #include<stdio.h> #include<stdlib.h> int

Day8 函数指针做函数参数

课堂笔记 课程回顾 多态 virtual关键字 纯虚函数 virtual func() = 0; 提前布局vptr指针 面向接口编程 延迟绑定 多态的析构函数的虚函数. 多继承的二义性 . 重载 重写 重定义. 实现多态的理论基础:函数指针做函数参数. vptr指针与虚函数表. 构造函数不应为虚函数 多态会降低程序的执行速度.不建议所有的函数都是虚函数. 多态时的指针步进. 多继承在项目开发中使用的比较少. linux从2.4内核升级到2.6的时候,做到了电源可以热插拔,提前将电源驱动的接口规划

函数指针和函数对象

函数指针(全局函数/类成员函数).函数对象(Function object) 一. 函数指针类型为全局函数. #include "stdafx.h" #include <iostream>using namespace std; class TestAction; typedef void (*fp)(int); void Drink(int i){cout<<"No. "<<i<<" drink...&qu

再论函数指针、函数指针数组

一.基本概念 数组名:本质是指向数组第一个元素的常量指针,即数组首地址 函数名:本质是指向函数第一条指令的常量指针,即函数首地址 函数指针:保存了函数首地址,可以看做函数的别名 二.函数指针的声明方法 type (*func)(type &, type &) 1.该语句声明了一个指针func,它指向了一个函数: 2.该函数带有2个type型参数,并返回一个type型的值: p.s. tpye类型可以看做int或者float等C++类型 3.可以把整个函数看做一个数据类型 tpye func