首页 > 其他分享 >函数指针变量

函数指针变量

时间:2023-10-16 22:05:15浏览次数:29  
标签:p2 变量 int add printf test 函数指针

函数指针变量

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

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 ()()) //强制类型转换

标签:p2,变量,int,add,printf,test,函数指针
From: https://blog.51cto.com/u_16261646/7893983

相关文章

  • 3_变量
    一.变量1.自定义变量1.定义变量:变量名=变量值#变量名不能是纯数字等号两边不能有空格值里面有空格必须用引号包起来name="niubi666"2.引用变量$变量名echo$nameniubi6663.重复定义变量1)aaa=123aaa=1122echo$aaa1122值会被覆盖......
  • 多线程编程同步:互斥锁和条件变量
    多线程同步怎样同步多个线程或多个进程的活动?为允许在线程或进程间共享数据,同步通常是必需的。而互斥锁和条件变量是同步的基本组成部分。互斥锁用于保护临界区(criticalregion),以保证任何时刻只有一个线程在执行其中的代码,或者任何时刻只有一个进程在执行其中的代码。互斥......
  • 在Vite项目中使用scss创建全局变量
    配置这个也就是配置全局scss的过程,在vite.config.ts的defineConfig中添加属性,其中additionalData为scss中引入文件的书写方式://scss全局变量的配置css:{preprocessorOptions:{scss:{javascriptEnabled:true,additionalData:'@import"......
  • 哈希 + 变量 + 存储
    哈希码哈希值、哈希码:hashCode()方法返回的是一个整数值,称为哈希码(HashCode),存在的主要意义是在散列表(HashTable)等数据结构中帮助快速定位对象其他存在意义:快速查找,散列集合(散列表(例如HashMap、HashSet)等集合使用哈希码来实现元素的快速检索通过哈希......
  • 2023_10_15_DAY_01_JAVA_SE_Java基础知识_中_变量与运算符
    2023_10_15_DAY_01_JAVA_SE_Java基础知识_中_变量与运算符标识符、关键字和保留字标识符在Java语言中,通过标识符来表示一些元素的名字,比如变量名、类名、方法名和包名等。Java中的标识符要符合下面的规则:标识符必须以字母、下划线(_)、数字或美元($)组成;标识符必须由字母、下......
  • 解析“字符指针变量,数组指针变量,二维数组”
    1.字符指针变量字符指针变量是存放地址的charch='w'; char*pc=&ch; *pc='w';表达式的两个属性:【值属性】计算后的值是多少【类型属性】类型是什么注:hello是常量字符串,不能被修改,是连续存放的,可用printf("%s\n",p);打印字符串。常量字符串指的是在程序中声明的一个不......
  • Matlab simulink常见问题和数据导出到变量区
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • Go 代码块与作用域,变量遮蔽问题详解
    Go代码块与作用域详解目录Go代码块与作用域详解一、引入二、代码块(Block)2.1代码块介绍2.2显式代码块2.3隐式代码块2.4空代码块2.5支持嵌套代码块三、作用域(Scope)3.1作用域介绍3.2作用域划定原则3.3标识符的作用域范围3.3.1预定义标识符作用域3.3.2包代码块级......
  • 07变量.md
    变量变量即可以变化的量Java是一种强类型语言,每个变量都必须声明其类型。Java变量是程序中最基本的储存单元,其要素包含变量名,变量类型和作用域。typevarName[=value][{,varName[+varName]}];//数据类型变量名=值;可以使用逗号隔开来声明多个同类型变量......
  • linux学习记录(管道、环境变量与常用命令) 10.14~10.15
    管道;类似文件重定向第一个命令的标准输出至第二个命令的标准输入,第二个文件的标准输出至第三个命令的标准输入(1)只会处理stdout标准输出,stderr会忽略(2)管道右边的命令必须能接受stdin(有些指令如:rmtmp-r接收的是文件参数)(3)多个管道命令可以串联 与文件重定向的区别:文件重......