指针函数一般是指返回指针的函数;
#include <stdio.h>
int* fun(int *a)
{
return a;
}
int main(int argc, char **argv)
{
int a = 3;
printf("%d", *(fun(&a)));
return 0;
}
函数指针是表示指向函数开始地址的指针:
首先要了解函数的调用过程:
#include <stdio.h>
int fun(int i)
{
return i + 1;
}
int main(int argc, char **argv)
{
int r;
//r = fun(5);
r = (*fun)(5); //调用方式
printf("%d\n", r);
return 0;
}
函数可以用r = (*fun)(5);来调用,说明函数名其实是一个指针,
通过(*fun)来寻址。所以我们就可以定义一个指针
#include <stdio.h>
int fun(int i)
{
return i + 1;
}
int main(int argc, char **argv)
{
int r;
int (*funP)(int); //声明指针
//funP = fun; //给指针赋值
funP = &fun;
r = funP(5);
printf("%d\n", r);
return 0;
}
#include <stdio.h>
int fun(int i)
{
return i + 1;
}
int main(int argc, char **argv)
{
int r;
int (*funP)(int); //声明指针
funP = fun; //给指针赋值
//r = funP(5);
r = (*funP)(5); //调用
printf("%d\n", r);
return 0;
}
#include <stdio.h>
int funA(int i)
{
return i + 1;
}
int funB(int i)
{
return i - 1;
}
void fun(int (*funP)(int), int i)
{
printf("%d\n", funP(i));
}
int main(int argc, char **argv)
{
int (*funP)(int); //声明指针
funP = funA; //给指针赋值
//funP = funB; //给指针赋值
fun(funP, 5); //调用
return 0;
}