(一)指针函数
指针函数,指针函数是指带指针的函数,即本质是一个函数,只不过这个函数的返回值是一个地址值。
int *fun() //声明函数,因为返回为地址,所以一般用int类型。 注:函数返回值必须赋给同类型的指针变量。
例子:
#include<stdio.h>
int *ChangeAscii(int n)
{
int str[10] = { 48,49,50,51,52,53,54,55,56,57 };
return &str[n];
}
int main(void)
{
int n;
printf("输入阿拉伯数字(0-9):");
scanf("%d", &n);
printf("%d\n", *ChangeAscii(n));
printf("%d\n", ChangeAscii(n));
return 0;
}
结果:
(二)函数指针
函数指针是指向函数的指针变量。
赋给函数指针的函数应该和函数指针所指的函数原型是一致的,参数类型也要一致。
int func(int x); //声明一个函数
int (*p) (int n) ; //声明一个函数指针
p=func; // 将func函数的首地址赋给指针p
例子:
#include<stdio.h>
int add(int a, int b)
{
int res;
res = a + b;
return res;
}
int sub(int a, int b)
{
int res;
res = a - b;
return res;
}
int main(void)
{
int a, b, res, select;
int(*p)(int, int);
printf("输入两个数:");
scanf("%d%d", &a, &b);
printf("1.加法 2.减法\n请选择序号:");
scanf("%d", &select);
if (select == 1) {
p = add; res = p(a, b);
}
else if(select == 2) {
p = sub; res = p(a, b);
}
printf("%d\n", res);
return 0;
}
输出结果: