黑马程序员技术交流社区
标题: 2014.11.16学习小结之指向函数的指针 [打印本页]
作者: 736010695 时间: 2014-11-16 22:40
标题: 2014.11.16学习小结之指向函数的指针
本帖最后由 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;
}
作者: 许庭洲 时间: 2014-11-18 08:13
讲的很好,值得学习ing!
作者: 我爱吃丶柠檬 时间: 2014-11-18 10:36
新人,问一下,为什么指针变量指向函数的时候,函数都是不用加括号吗?而是把括号以及参数类型都加在指针变量的后面是吗?
作者: 736010695 时间: 2014-11-18 13:07
不知道你说的是不是把函数地址赋给指针p= test这一步,因为函数名和数组名一样都是直接代表了自己的地址
作者: 我爱吃丶柠檬 时间: 2014-11-19 10:47
明白了。。:victory:
作者: zhao190109 时间: 2014-11-19 12:12
这个还是写到博客较好点:lol
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |