函数指针,函数指针数组,函数指针数组指针实例

【opencv3 学习记录】第二章 读取显示保存视频 一:捕获视频函数 1.函数:cv2.VideoCapture(参数) 2.参数说明: (1)开启摄像头:参数一般为0,你可以通过设置成 1 或 者其他的来选择别的摄像头。 (2)从文件夹中获取视频:参数为字符串形式的文件路径 3.示例: cap = cv2.VideoCapture(0) #cap:存放参数 二:读取视频函数 1.函数:cap.read() 2.函数说明: (1)cap.read 中cap与捕获视频函数存放函数一致,可以自己命名.括号一般不用填写 (2)ret,f 阅读详情

一、函数指针实例

  函数指针实例1:

#include<stdio.h>
void fun0(void)
{
	printf("call fun0\n");
}
void fun1(void)
{
	printf("call fun1\n");
}

void main(void)
{
	void(*pf0)(void); //定义函数指针变量
	void(*pf1)(void);

	pf0 = fun0;      //函数指针变量赋值(方式1)
	pf1 = &fun1;     //函数指针变量赋值(方式2)

	pf0();	    //通过函数指针调用函数(方式1)
	(*pf0)();	//通过函数指针调用函数(方式2)

	pf1();
	(*pf1)();

	getchar();
}

  函数指针实例2:

double my_add(double a, double b)
{
	return a + b;
}

double my_sub(double a, double b)
{
	return a - b;
}

double calculate(double a, double b, double(*funcptr)(double, double))
{
	return (*funcptr)(a, b);
}


void main(void)
{
	double a = 4.0, b = 3.0, c, d;

	c = calculate(a, b, my_add);  //函数指针作为函数参数
	d = calculate(a, b, my_sub);
}

  函数指针实例3:

#include <stdio.h>
typedef double(*FP_CALC)(double, double);//定义一个函数指针类型

double my_add(double a, double b)
{
	return a + b;
}

double my_sub(double a, double b)
{
	return a - b;
}

double my_mul(double a, double b)
{
	return a * b;
}

double my_div(double a, double b)
{
	return a / b;
}

FP_CALC mapping_operator(char operator)
{
	FP_CALC fp;
	switch (operator)
	{
		case '+':
			fp = my_add;
			break;
		case '-':
			fp = my_sub;
			break;
		case '*':
			fp = my_mul;
			break;
		case '/':
			fp = my_div;
			break;
		default:
			fp = NULL;
			break;
	}
	return fp;
}

double calculate(double a, double b, char operator)
{
	FP_CALC fp = mapping_operator(operator);
	return (*fp) (a, b);
}

void main(void)
{
	double a = 20.0, b = 10.0;

	printf("%f %c %f = %f\n", a, '+', b, calculate(a, b, '+'));
	printf("%f %c %f = %f\n", a, '-', b, calculate(a, b, '-'));
	printf("%f %c %f = %f\n", a, '*', b, calculate(a, b, '*'));
	printf("%f %c %f = %f\n", a, '/', b, calculate(a, b, '/'));
	getchar();
}

二、函数指针数组实例

  函数指针数组实例1:

#include <stdio.h>

char *fun0(char *p)
{
	printf("%s\n", p);
	return p;
}

char *fun1(char *p)
{
	printf("%s\n", p);
	return p;
}

char *fun2(char *p)
{
	printf("%s\n", p);
	return p;
}

void main(void)
{
	char * (*pf[3]) (char *) = { NULL, NULL, NULL }; // 定义函数指针数组

	pf[0] = fun0;  //函数指针数组元素赋值
	pf[1] = &fun1; //另一种赋值方式
	pf[2] = &fun2;

	(*pf[0])("fun0");  //调用函数
	(*pf[1])("fun1");
	pf[2]("fun2");    //另一种方式调用函数

	getchar();
}

  函数指针数组实例2:

#include <stdio.h>
typedef double(*FP_CALC)(double, double);//定义一个函数指针类型

double my_add(double a, double b)
{
	return a + b;
}

double my_sub(double a, double b)
{
	return a - b;
}

double my_mul(double a, double b)
{
	return a * b;
}

double my_div(double a, double b)
{
	return a / b;
}

void main(void)
{
	double a = 20.0, b = 10.0;

	FP_CALC functionPointerArray[4] = { my_add , my_sub , my_mul , my_div };

	printf("%f %c %f = %f\n", a, '+', b, functionPointerArray[0](a, b));
	printf("%f %c %f = %f\n", a, '-', b, functionPointerArray[1](a, b));
	printf("%f %c %f = %f\n", a, '*', b, functionPointerArray[2](a, b));
	printf("%f %c %f = %f\n", a, '/', b, functionPointerArray[3](a, b));
	getchar();
}

三、函数指针数组指针实例

#include <stdio.h>

char *fun0(char *p)
{
	printf("%s\n", p);
	return p;
}

char *fun1(char *p)
{
	printf("%s\n", p);
	return p;
}

char *fun2(char *p)
{
	printf("%s\n", p);
	return p;
}

void main(void)
{
	char * (*a[3]) (char *) = { NULL, NULL, NULL }; // 定义函数指针数组
	char * (*(*pf)[3]) (char *) = NULL; // 定义函数指针数组指针

	pf = &a;

	a[0] = fun0;  //函数指针数组元素赋值
	a[1] = &fun1; //另一种赋值方式
	a[2] = &fun2;

	(*pf[0][0])("fun0");  //调用函数
	(*pf[0][1])("fun1");
	pf[0][2]("fun2");    //另一种方式调用函数

	getchar();
}
硬核干货|C#+EtherCAT协议:高精度多轴伺服运动控制通信实战 本文摘要: 文章聚焦工业自动化领域多轴伺服运动控制的高精度与实时性需求,基于C#与EtherCAT协议实现完整解决方案。EtherCAT凭借微秒级同步、分布式架构等优势成为首选,而C#通过优化GC策略和实时线程可满足工业控制要求。文章从工程落地角度,详细拆解EtherCAT的PDO/SDO通信机制与多轴同步控制逻辑,提供完整的C#代码实现(主站初始化、伺服配置、运动控制等),所有代码均通过汇川/松下伺服实测验证。核心亮点包括:纯C#原生开发、工业现场高频问题解决方案、硬件适配指南,帮助开发者快速掌握高精度多 阅读详情

相关推荐

FLUENT UDF编译及蒸发冷凝相关问题

蒸发冷凝与相间传质

weixin_48029137的博客 1万+

【C语言进阶】⑥函数指针详解

一、函数指针 1.概念 函数指针:首先它是一个指针,一个指向函数的指针,在内存空间中存放的是函数的地址; 请看示例: int main(){ int a = 10; int*pa = &a; char ch = 'c'; char* pc = &ch; int arr[10] = {0}; int (*parr)[10] = &arr;//取出数组的地址 return 0; } 解析:parr是一个指向数组的指针,存放的是数组的地址; 所以: 数组指针 —存放数组地址的指针

森林里的白杨 6万+

OpenClaw + Ollama 本地大模型部署教程:彻底告别Token焦虑

OpenClaw + Ollama 本地大模型部署教程:彻底告别Token焦虑

leaning_java的博客 1228

函数指针和指针函数用法和区别

前言 函数指针和指针函数,在学习 C 语言的时候遇到这两个东西简直头疼,当然还有更头疼的,比如什么函数指针函数、指针函数指针、数组指针、指针数组、函数指针数组等等,描述越长其定义就越复杂,当然理解起来就越难,特别是刚开始学习这门语言的童鞋,估计碰到这些东西就已经要崩溃了,然后好不容易死记硬背下来应付考试或者面试,然后过了几天发现,又是根本不会用,也不知道该在哪些地方用,这就尴尬了。 今天这里只...

luoyayun361的专栏 31万+

VMware ubuntu虚拟机(或Centos7)与主机共享文件夹

系统环境 Windows 10 Vmware Workstation 15 Pro Ubuntu 20.04.1 LTS centos7 1.Ubuntu配置共享文件 1.1安装VMware-tools 更新最新VMware-tools组件 编辑->首选项->更新->立即下载所有组件 安装VMware-tools 虚拟机->安装VMware-tools 安装后ubuntu会加载一个虚拟光驱,解压文件,在解压的文件目录下执行以下命令进行安装 sudo vmware-instal

weixin_38924500的博客 2160

华为硬件工程师笔试题

1、基尔霍夫定理的内容是什么?(仕兰微电子)   基尔霍夫定理包括电流定律和电压定律。   电流定律(KCL):在集总电路中,任何时刻,对任一结点,所有流出结点的支路电流的代数和恒等于零。   电压定律(KVL):在集总电路中,任何时刻,沿任一回路,所有支路电压的代数和恒等于零。   2、平板电容公式(C=εS/4πkd)。(未知)   3、最基本的如三极管曲线特性。(未知)   4、描述反馈电路...

weixin_33717117的博客 2万+

C语言_指针进阶(下)

数组是一个存放相同类型数据的存储空间,那把函数的地址存放到一个数组中,那这个数组就叫函数指针数组提示:以下是代码样例,下面案例可供参考int Add(int x, int y) //加int Sub(int x, int y) // 减int Mul(int x, int y)//乘int Div(int x, int y)//除//计算器int main()int x = 0;int y = 0;//定义一个函数指针数组domenu();

Ghr_C99的博客 237

UE5接入在线直播视频源,如hls(m3u8)格式

UE5接入在线直播视频源

专注GIS开发 9503

【C语言进阶】函数指针、函数指针数组、指向函数指针数组的指针

【C语言进阶】用示例代码教会你如何使用函数指针、函数指针数组、指向函数指针数组的指针。

共同学习,相互分享。 580

生成模型实战 | ProGAN详解与实现

Progressive GAN (ProGAN) 是一种通过渐进式增长网络结构来生成高分辨率、高保真图像的技术。传统 GAN 难以直接生成超过 256x256 分辨率的图像,而 ProGAN 创新性地从低分辨率开始训练生成器和判别器,逐步添加网络层以提高分辨率,直至达到1024x1024。该方法结合了像素归一化、小批次统计信息和均衡化学习率等关键技术,并使用 WGAN-GP 损失函数确保训练稳定性。ProGAN 是首个能生成1024x1024高保真人脸图像的模型,但其训练耗时较长,且对计算资源要求较高。

盼小辉丶的博客 1435

基于深度学习的AI生成式人脸图像鉴别

AIGC(AI内容生成)技术的快速发展确实为创作者提供了高效生产力工具,但同时也引发了一些问题和挑战。这些技术可以生成以假乱真的图像、视频换脸等,给不法分子提供了滥用的机会。其中,一些不法分子可能利用AIGC技术制造虚假新闻、违反版权、绕过活体身份验证、散布谣言和诽谤他人、进行敲诈勒索等非法活动,以谋取不当利益。这些行为给社会造成了严重的负面影响,破坏了信息的真实性和可信度。因此,我们需要认识到AIGC技术的潜在风险,并采取相应的措施来应对。

mingo_敏 4497

【C语言】函数指针|函数指针数组|函数指针数组指针|如何理解?

【C语言】函数指针|函数指针数组|函数指针数组指针|如何理解?函数指针实现简易计算器|库函数qsort|使用sqort函数对结构体变量的成员排序|模拟qsort实现冒泡排序|泛型指针|结构体数组

m0_64538862的博客 2899

【学习系列】SAP RAP 22:Excel文件上传和读取(非扩展&扩展方式)

本文介绍了在RAP中实现Excel文件上传处理的三种方法:1) 使用@Semantics.largeObject注解实现简单上传下载,但限制在ObjectPage页面使用;2) 通过自定义action弹窗实现上传功能,但存在无法自动刷新列表等限制;3) 结合CustomUIExtension实现更灵活的完整功能,但需要UI5开发技能。文章详细说明了每种方法的实现步骤,包括数据库表设计、注解配置、前端界面开发和后端处理逻辑,并比较了各自的优缺点。最后通过一个处理不同币种数据的示例,展示了如何实现业务处理逻辑。

DeveloperMrMeng的博客 625

函数指针数组应用实例

<br />从概念上分析,函数指针数组首先是一个数组,数组的元素都是函数指针,而函数指针又是一个指针,但它不是指向普通数据类型或者结构体的指针,而是一个指向函数的指针。<br /> <br />以下代码的背景是为两组字符编码转换函数做单元测试,使用函数指针数组可以使程序可读性更强,否则,就像末尾注释的那段那样,需要冗长的代码代替。<br /> <br />#include <stdio.h> #include <stdlib.h> #include <string.h> #define ENCODIN

The power of C, the secret of MD 2190

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

c语言函数指针、指针数组、二级指针、结构体、联合体、枚举实例解析(一文快速掌握)

本文主要讲解函数指针及用法,同时实例讲解结构体和枚举。函数指针是指向函数的指针变量。因此“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。//typedef可以使用stFunc_t去申明一个函数指针//成员申明一个函数指针对结构体进行赋值_CleanShutDownStateFuncs,//将最开始的指针数组传入(每个成员指向设置的函数 )

Luckiers的博客 1196

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

指针函数,函数指针和函数指针数组的概念详解以及实例应用说明

概念详解:    指针函数:通常在C语言中,如int *function();可以定义一个指针函数,其本质是一个函数,但函数返回值是一个指针,因为函数返回值是一个指针,所以函数返回类型一般用int表示。   函数指针:在C语言中,有整形指针,如int *p,有浮点型指针,如float *p,它们分别指向整形数和浮点型数。函数指针同上述整形指针与浮点型指针概念一样,函数指针即指向函数的指针,通常可以...

匪匪的博客 557

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

函数指针数组的应用实例

函数指针数组: 实际上是将多个函数的地址放到一个数组中,需要哪个函数用数组调用就行 函数名就可以代表函数地址 即: fun=&fun 实现一个计算器 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int Add(int x, int y) { return x + y; }...

Electronic_rest的博客 371

函数指针数组工程实例

在这以前曾经写过一篇关于函数指针数组文章,今天又看到了通信工程的应用,拷贝下来,作为参考! http://blog.youkuaiyun.com/eliot_shao/article/details/8609259 1、数据结构的定义 typedef int (*IO_DETECT_FUCTION)(void); typedef struct __IO_DETECT { int id;

Eliot_shao的专栏 1205

类的函数指针数组应用实例

类成员函数指针与类数据成员指针类似。在开发中与及apache源码中都有关于函数指针数组的精妙应用。本文主要是类的成员中如何使用函数指针数组来减少大量重复的工作,提高代码可读性及效率。//声明包含public成员函数的类class X{public:   int value;     int total;   int count;   void SetValue(int v){value = v;}

denny的专栏 2705

函数指针数组指针实例

1 #include <stdio.h> 2 #include <string.h> 3 char * fun1(char * p) 4 { 5 printf("%s\n",p); 6 return p; 7 } 8 char * fun2(char * p) 9 { 10 printf("%s\n",p); 11 return p...

weixin_30955341的博客 88

指针数组,数组指针,函数指针及应用(回调函数)

指针数组与数组指针   当我们在学习指针与数组时总会遇到两个令人容易混淆的概念:数组指针与指针数组。   在这里数组指针是指向数组的指针,其本质为指针指向的对象是数组。由于数组的形式多样所以数组指针的表达也十分多样。   同理,指针数组就是存放指针的数组,其本质为数组。   由于“[ ]”的优先级高于“ * ”的优先级,指针数组与数组指针的表达可做如下表示: int p1 [10];...

Erica_ou的博客 1万+

函数指针数组与返回函数指针的函数的含义与使用实例

函数指针数组的一些使用

weixin_44684090的博客 586

Linux C 指针数组 数组指针 函数指针 的使用实例

实现功能: 1.用二维数组Sorce【6】【4】保存学生的数学、英语、C和总成绩; 2.用一维数组存放姓名并和二维下标一一对应 3.输入各科成绩,自动求出总分并存入数组 4.输出各门功课的分数及总分,最高分,最低分和平均值 5.分数最高和分数最低学生的姓名及各科成绩 实现要求: 使用Makefile、函数指针、数组指针、指针数组传参 一.通用的头文件#ifndef _SETMSG_

Lc_Xs的博客 827

006-函数指针数组

函数指针数组

其木王·王子的博客 453

SSD6 Exercise0: 函数指针数组的使用实例

程序用途:提示使用者输入两个数字,然后进行简单的计算(加减乘除和平方)#include <stdio.h> #include <stdlib.h> #include <math.h>double Add(double x,double y){return x+y;} double Sub(double x,double y){return x-y;} double Mul(double x,doub

maiowu1001的博客 338

深入理解指针数组、数组指针、函数指针、函数指针数组、指向函数指针数组的指针

指针数组表达式为:int *p[5] 理解:下标运算符[ ]的优先级是要高于指针运算符*,因此p先和下标运算符结合,决定了p首先是个数组,其类型int *,表明数组的元素都是都是指针。而数组占多少个字节由数组本身决定。其实指针数组表达就是一个存放指针的数组。 其图示如下: 数组指针表达式为:int (*p2)[5] 理解:括号运算符()的优先级是最高的,因此p2先和括号内的指针运算符*结合,

cherishinging的博客 3031
上一篇: c语言中如何避免过多使用全局变量
下一篇: 为什么我推荐使用一级指针创建二维数组?
Marc Pony
博客等级 码龄12年 2万+粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值