c语言---函数指针变量

目录

一、函数指针变量的概念

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

二、函数指针变量的创建

那么函数是否有地址呢?

接下来看看:

c 复制代码
#include <stdio.h>
void test()
{
 printf("hehe\n");
}
int main()
{
 printf("test: %p\n", test);
 printf("&test: %p\n", &test);
 return 0;
}

运行结果:

确实打印出来了地址,所以函数是有地址的,函数名就是函数的地址,当然也可以通过 &函数名 的方式获得函数的地址。这两个结果一模一样。

如果我们要将函数的地址存放起来,就得创建函数指针变量咯,函数指针变量的写法其实和数组指针非常类似。如下:

c 复制代码
int(*pf3)() = Add;//第一种创建方法(&Add)
int(*pf3)(int, int) = Add;//第二种创建方法
int(*pf3)(int x, int y) = Add;//第三种创建方法

三、函数指针变量的使用

c 复制代码
#include <stdio.h>
int Add(int x, int y)
{
	return x + y;
}
int main()
{
	int(*pf3)(int x, int y) = Add;
	printf("%d\n", (*pf3)(2, 3));
	printf("%d\n", pf3(3, 5));
	return 0;
}

运行结果:

欧耶!!!我学会啦!!!

相关推荐
lly2024063 分钟前
ASP #include 指令详解
开发语言
2501_936960364 分钟前
ROS快速入门杰哥教程1-77残缺版
java·开发语言
游乐码7 分钟前
c#封装成员变量和成员方法和访问修饰符
开发语言·c#
weisian15112 分钟前
JVM--13-深入ThreadLocal:线程私有数据的隔离艺术与实战陷阱
开发语言·jvm·threadlocal
白太岁18 分钟前
操作系统开发:(10) 线程创建与调度的底层原理:从硬件行为解释线程
c语言·网络·系统架构
Never_Satisfied21 分钟前
在c#中,Jint的AsString()和ToString()的区别
服务器·开发语言·c#
Never_Satisfied21 分钟前
在c#中,获取文件的大小
java·开发语言·c#
Never_Satisfied30 分钟前
在JavaScript / HTML中,触发某个对象的click事件
开发语言·javascript·html
lly20240631 分钟前
ionic 下拉刷新:实现与优化指南
开发语言
米羊12132 分钟前
Spring 框架漏洞
开发语言·python