36-函数与指针

来源:互联网 发布:北航知行论坛 编辑:程序博客网 时间:2024/06/04 19:02

1、函数类型

这里写图片描述


2、函数指针

这里写图片描述


3、回调函数

这里写图片描述
使用c语言直接跳转到某个地址执行,这里就要用到回调函数

#include <stdio.h>typedef int(FUNC)(int);int test(int i){    return i * i;}void f(){    printf("Call f()...\n");}int main(){    FUNC* pt = test;    void(*pf)() = &f; //等价void(*pf)() = 0x12345678    printf("pf = %p\n", pf);    printf("f = %p\n", f);    printf("&f = %p\n", &f);    pf();    (*pf)();    printf("Function pointer call: %d\n", pt(2));    return 0;}

4、回调函数使用

#include <stdio.h>typedef int(*Weapon)(int);void fight(Weapon wp, int arg){    int result = 0;    printf("Fight boss!\n");    result = wp(arg);    printf("Boss loss: %d\n", result);}int knife(int n){    int ret = 0;    int i = 0;    for(i=0; i<n; i++)    {        printf("Knife attack: %d\n", 1);        ret++;    }    return ret;}int sword(int n){    int ret = 0;    int i = 0;    for(i=0; i<n; i++)    {        printf("Sword attack: %d\n", 5);        ret += 5;    }    return ret;}int gun(int n){    int ret = 0;    int i = 0;    for(i=0; i<n; i++)    {        printf("Gun attack: %d\n", 10);        ret += 10;    }    return ret;}int main(){    fight(knife, 3);    fight(sword, 4);    fight(gun, 5);    return 0;}

5、小结

这里写图片描述

lve/70/gravity/SouthEast)