指针函数 和 函数指针"/>
指针函数 和 函数指针
指针函数 和 函数指针
- 函数指针
函数类型的指针,或者说是指向函数的指针
//定义普通函数,返回值为int类型
int add(int x,int y)
{return (x+y);
}
//定义相乘的函数,返回值为int类型
int multiply(int xx,int yy)
{return (x*Y);
}//定义函数指针,后面括号是两个参数,参数个数和类型取决于指针P指向的函数
int (*P) (int a,int b); //指针的类型由P指向的函数决定,这里(*p)的前缀是intint main()
{P=add;//P=&add; //让指针指向函数,以上两种写法都可以。因为函数名就代表地址,所以加不加取地址符号都行printf("%d",(*P)(3,5)); //(*P)就相当于是函数名P=&multiply; //改变指针指向printf("%d",(*p)(5,4));
}
-
指针函数
指针类型的函数,或者说函数的返回值类型是指针
int c;//定义全局变量cint* add(int x,int y) {c=x+y;return &c; }int * (*p) (int x,int y); //前缀为 int*,说明P指针指向的是int*类型的函数int main() {p=add; printf("%d",(*p)(3,5));// 由于add函数的返回值是指针类型,所以返回的是地址printf("%d",*(*p)(3,5))//再加一个*号,取地址。}
函数指针的作用可以是可以作为函数的参数
int add(int x,int y)
{return (x+y);
}int addPlus( int (*p) (int x,int y), int m,int n)
{
//其实就相当于是 int (*p)(int x,int y)=add;return (*p)(m,n);}int main()
{printf("%d",addPlus(add,3,5));}
我们也可以定义函数指针数组
int main()
{
int (*f[2]) (int x,int y)=(add,multiply);printf("%d",(*f[0]) (3,5) );//调用add函数printf("%d",(*f[1]) (5,4) );//调用multiply函数}
$$
$$
更多推荐
指针函数 和 函数指针
发布评论