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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Edware 中级黑马   /  2015-8-17 00:18  /  878 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.指针函数概念
- 前面我们介绍过,所谓函数类型是指函数返回值的类型。在C语言中允许一个函数的返回值是一
个指针(即地址),这种返回指针值的函数称为指针型函数。


2.指针函数的定义和使用
- 格式:
```
类型说明符 *函数名(形参表) {
    /*函数体*/
}
3.为什么指针可以指向一个函数?
函数作为一段程序,在内存中也要占据部分存储空间,它也有一个起始地址,即函数的入口地址。函数有自己的地址,那就好办了,我们的指针变量就是用来存储地址的。因此,可以利用一个指针指向一个函数。其中,函数名就代表着函数的地址。

4.针函数的定义和使用
格式:
函数的返回值类型 (*指针变量名)(形参1, 形参2, ...);
其中“类型说明符”表示被指函数的返回值的类型。
“(* 指针变量名)”表示“*”后面的变量是定义的指针变量。
最后的空括号表示指针变量所指的是一个函数。
int sum(inta,int b)
    {
return a + b;
    }

int (*p)(int,int);
p = sum;
```

技巧
1、把要指向函数头拷贝过来
2、把函数名称使用小括号括起来
3、在函数名称前面加上一个*
4、修改函数名称

- 应用场景
调用函数
将函数作为参数在函数间传递

5.使用注意
由于这类指针变量存储的是一个函数的入口地址,所以对它们作加减运算(比如p++)是无意义的
- 函数调用中"(*指针变量名)"的两边的括号不可少,其中的*不应该理解为求值运算,在此处它只是一种表示符号

5 个回复

倒序浏览
oc中的block会用到此处知识,建议大家掌握理解。
回复 使用道具 举报
使用注意
由于这类指针变量存储的是一个函数的入口地址,所以对它们作加减运算(比如p++)是无意义的
- 函数调用中"(*指针变量名)"的两边的括号不可少,其中的*不应该理解为求值运算,在此处它只是一种表示符号
回复 使用道具 举报
Thank you .
回复 使用道具 举报
指针一定要认真学啊,真的非常重要
回复 使用道具 举报
借用一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马