函数指针

int maxValue(int x, int y);
int minValue(int x, int y);
int sumValue(int x, int y);

int maxValue(int x, int y) {
    return x > y ? x : y;
}
int minValue(int x, int y) {
    return x < y ? x : y;
}
//函数类型: int (int x, int y)
int sumValue(int x, int y) {
    return x + y;
}
//如果没有参数, 定义时括号必不可少
void printHello() {
    printf("Hello");
}
int main(int argc, const char * argv[])
{
    //函数指针: 指向函数的指针变量
    //函数使用的三个部分
    //1 函数的声明(没有函数体)
    //2 函数的实现(函数返回值, 函数名, 形参列表, 函数体)
    //3 函数的调用(函数名(实参列表))
    int max = maxValue(10, 5);
    int min = minValue(10, 5);
    int sum = sumValue(10, 5);
    printf("max = %d min = %d sum = %d\n", max, min, sum);
    //函数的声明: int minValue(int x, int y);
    //函数指针定义
    //定义一个函数指针指向minValue函数
    //p函数指针变量名 NULL是函数指针变量的初值 int(*)(int x, int y)是函数指针类型
    //定义了一个函数指针名字为p, 指向了一个返回值为int类型, 并且有两个整型参数的函数
    int (*p)(int x, int y) = NULL;
    //指针变量赋值, 函数地址
    //函数名代表函数的首地址
    p = minValue;//p指向minValue函数
    //当把函数的地址赋给指针变量p之后, p就可以当做函数名使用
    int min2 = p(10, 5);
    int (*p2)(int x, int y) = NULL;
    int (*p3)(int x, int y) = NULL;
    p2 = maxValue;
    p3 = sumValue;
    int max2 = p2(10, 5);
    int sum2 = p3(10, 5);
    printf("max2 = %d min2 = %d sum2 = %d\n", max2, min2, sum2);
    void (*p4)() = NULL;
    p4 = printHello;
    p4();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值