C++函数指针
QQ : 1841545843
邮箱 : jiaxx903@163.com
函数指针
函数被存在内存中一片连续的存储单元内,其中排在最前面的那个存储单元的地址就是这个函数的地址,也叫做函数指针,用函数名表示,他是一个地址常量。
指向函数的指针变量
- 定义形式: 数据类型 (*指针变量名)();
int (*p)();
- 函数指针变量赋值
p = max;
- 函数调用形式
c = max(a, b);
c = (*p)(a, b);
c = p(a, b);
- 对函数指针变量p + n, p - n, p++, p-- 无意义。
用指向函数的指针变量调用函数
main()
{
int max(int, int);
int (*p)();
int _a, _b, _c;
p = max;
scanf("%d, %d", &a, &b);
_c = (*p)(_a, _b);
printf("a = %d, b = %d, max = %d\n", _a, _b, _c)
}
int max(int x_, y_)
{
int _z;
if(x_ > _y)
{
_z = x_;
}
else
{
_z = y_;
}
return _z;
}
用指向函数的指针变量作函数参数
用函数指针变量作从参数,求最大值、最小值和两数和
void main
{
int a, b, max(int, int), min(int, int), add(int, int);
void process(int, int, int(*func)());
scanf("%d, %d", &a, &b);
process(a, b, max);
process(a, b, min);
process(a, b, add);
}
void process(int x, int y, int(*func)())
{
int result;
result = (*func)(x, y);
print("%d\n", result);
}
max (int x, int y)
{
return(x > y ? x : y);
}
min (int x, int y)
{
return(x < y ? x : y);
}
add(int x, int y)
{
return(x + y);
}
返回指针值的函数
- 函数定义形式 类型标识符 *函数名(参数表)
int *f(intx, int y)
指针的数据类型
定义 | 含义 |
---|---|
int *p | p为指向整形数据的指针变量 |
int *p[n] | n个指向整形数据的指针变量组成的指针数组p |
int (*p)[n] | p为指向含n个元素的一维整形数组的指针变量 |
int *p() | p为返回指针的函数 |
int (*p)() | p为指向函数的指针变量 |