A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 736010695 中级黑马   /  2014-11-16 22:40  /  996 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 736010695 于 2014-11-17 15:51 编辑

#include <stdio.h>

void test();

int sum(int a , int b);

int main()
{
    //定义一个指向函数的指针变量
    void (*p)();
    /*
     (*p)是固定写法,这样写就代表指针p是要指向函数的,p是我们自己定义的
     变量名,左边是指向的函数类型,右边是指向的函数的形式参数
     */
    //指针变量p指向了test函数,函数名就代表函数地址
    p = test;

    //利用指针调用test函数,利用指针变量间接调用test函数
    (*p)();//直接写p()也可以,因为p和test内存地址一样

    //最直接调用test函数方法
    test();

    //定义一个指向sum函数的指针变量,并把sum的地址赋给指针变量
    int (*p2)(int , int) = sum;//直接把sum地址给了p2
    //利用指针变量间接调用sum函数求两个整数的和
    int result = p2(10, 4);
    printf("result=%d\n", result);

    return 0;
}


//随便定义一个函数
void test()
{
    printf("我一定要考上黑马\n");
}

//定义一个求和函数
int sum(int a, int b)
{
    return a +b;
}

评分

参与人数 1黑马币 +1 收起 理由
星河鹭起 + 1

查看全部评分

5 个回复

倒序浏览
讲的很好,值得学习ing!
回复 使用道具 举报
新人,问一下,为什么指针变量指向函数的时候,函数都是不用加括号吗?而是把括号以及参数类型都加在指针变量的后面是吗?
回复 使用道具 举报
我爱吃丶柠檬 发表于 2014-11-18 10:36
新人,问一下,为什么指针变量指向函数的时候,函数都是不用加括号吗?而是把括号以及参数类型都加在指针变 ...

不知道你说的是不是把函数地址赋给指针p= test这一步,因为函数名和数组名一样都是直接代表了自己的地址
回复 使用道具 举报
736010695 发表于 2014-11-18 13:07
不知道你说的是不是把函数地址赋给指针p= test这一步,因为函数名和数组名一样都是直接代表了自己的地址 ...

明白了。。:victory:
回复 使用道具 举报
这个还是写到博客较好点:lol
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马