函数指针
也是一个指针,存放的是函数的地址。
两个问题;
1.如何定义?
// 如何定义一个函数指针?
void (*p2)(); // 1.如何表示指针;用*表示,2.如何知道是函数指针;有括号() 3.函数指针是专用的,格式要求很强(参数类型,个数,返回值都要一致),就像数组指针一样
;
1.如何表示指针;用*表示,2.如何知道是函数指针;有括号() 3.函数指针是专用的,格式要求很强(参数类型,个数,返回值都要一致),就像数组指针一样 。
2.如何通过指针来调用函数?
p2 = printwelcome; // 函数名就是地址,就像数组一样,数组名就是地址
函数名就是地址,就像数组一样,数组名就是地址
// 如何通过函数指针调用函数
p2(); // 直接通过指针名字+ ()
(*p2)(); // 去内容 (*指针名字)()
1.直接通过指针名字+ ()
2.去内容 (*指针名字)()
#include <stdio.h>
#include <stdlib.h>
void printwelcome()
{
printf("欢迎来到老K编程空间站\n");
}
void add(int a,int b){
return a+b;
return 0;
}
int main()
{ /*
int i = 10;
printf("i=%d\n",i); //通过变量名来访问一个变量
int *p = &i;
printf("i=%d\n",*p);
printwelcome();// 通过函数名来调用函数
*/
// 如何定义一个函数指针?
void (*p2)(); // 1.如何表示指针;用*表示,2.如何知道是函数指针;有括号() 3.函数指针是专用的,格式要求很强(参数类型,个数,返回值都要一致),就像数组指针一样
// 如何给函数指针赋值;
p2 = printwelcome; // 函数名就是地址,就像数组一样,数组名就是地址
// 如何通过函数指针调用函数
p2(); // 直接通过指针名字+ ()
(*p2)(); // 去内容 (*指针名字)()
int (*padd)(int a,int b);
padd = add;
int ret = (*padd)(1,2);
printf("ret=%d\n",ret);
system("pause");
return 0;
}