函数指针变量
  1RCuiic9kjTM 2023年11月02日 71 0

函数指针变量

函数指针变量应该是⽤来存放函数地址的,未来通过地址能够调用函数

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;
}

函数指针变量_强制类型转换_02

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;
}

函数指针变量_强制类型转换_03

上面两个代码中,void (*p1)() = &test;int (*p2)(int, int) = add都是创建函数指针变量

int (*p2)(int, int) = add;
int (*p2)(int x, int y) = add;//x和y写上或者省略都是可以的

函数指针变量_强制类型转换_04

void ()();//函数指针类型 //(void ()()) //强制类型转换

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
1RCuiic9kjTM