函数指针变量
函数指针变量应该是⽤来存放函数地址的,未来通过地址能够调用函数
int add(int x, int y)
{
return x + y;
}
int main()
{
printf("%p\n", &add);
printf("%p\n", add);
return 0;
}
函数是有地址的,add
的地址和&add
的地址一致说明函数名就是函数的地址
将函数的地址存放起来,就得创建函数指针变量 下图中:p1是函数指针变量
void test()
{
printf("hello world");
}
int main()
{
test();
printf("\n");
void (*p1)() = &test;
printf("test=%p", test);
printf("\n");
printf(" p1 =%p",p1);
return 0;
}
int add(int x, int y)
{
return x + y;
}
int main()
{
int (*p2)(int, int) = add;//p2是函数指针变量
int r = (*p2)(3, 5);//也可以写成int r = p2(3, 5);
//int r = p2(3, 5);
printf("p2 =%p\n", p2);
printf("add=%p\n", add);
printf("r=%d\n", r);
int n = add(5, 6);
printf("n=%d\n", n);
return 0;
}
上面两个代码中,void (*p1)() = &test;
和int (*p2)(int, int) = add
都是创建函数指针变量
int (*p2)(int, int) = add;
int (*p2)(int x, int y) = add;//x和y写上或者省略都是可以的
void ()();//函数指针类型 //(void ()()) //强制类型转换
标签:p2,变量,int,add,printf,test,函数指针 From: https://blog.51cto.com/u_16261646/7893983