在写dll 插件中发现的函数指针用途和 typedef 的定义指针的用法

本文详细解释了C语言中typedef用于定义函数指针的作用,展示了如何使用typedef简化函数指针的声明和调用过程,以及在动态链接库中的应用实例。
摘要由CSDN通过智能技术生成

接上一篇

Dev c++ C语言实现第一个 dll 动态链接库 创建与调用-CSDN博客

有一行代码不懂

	typedef void (*func)(double a, double b, double c[], double* aplusb);  // 填调用的输入参数

这里查找资料

C语言指针进阶(一)——深入详解“函数指针”与“指针函数”-CSDN博客

对typedef的真正理解_typedef等同于class吗-CSDN博客

typedef特殊用法:typedef void* (*fun)(void*)_typedef void *-CSDN博客

 得到结论:来每一次产生一个指针,都要写一堆参数,而typedef 定义之后,可以一个词结束战斗

但是先跑下面的代码,复制粘贴运行,对比一下即可验证

//类似于指针选择变量,
//只不过指针变量原来是换不同的变量存东西,
//现在是换不同的函数执行相同的数据 

#include <windows.h>
#include <iostream>

using namespace std;

// 简单函数 
void mk(int m)
{
	cout<<m<<endl;
}
// 相同的参数 
void mkv2(int n)
{
	for(int i=0; i<7; i++)
	{
		cout<<n;
	}
	cout<<"mkv2"<<endl;
}
// 一个函数 
void him(int old)
{
	cout<<"age:"<<old<<endl;
}
// 另一个函数 
void she(int young)
{
	cout<<"high"<<young<<endl;
}


int main()
{


	typedef void (*Myfun)(int n);				// 声明函数指针, 函数返回值的类型是 void,类型名是“Myfun”,指针需要的参数是一个 int 型数据。
	Myfun kk;									// 声明一个函数指针;
	kk=&mk;										// 这个函数指针拿mk 当替身
	mk(9);										// 测试数据
	kk(8);

	kk=&mkv2;									// 这个函数指针拿mkv2 当替身
	kk(9);										// 测试数据
	mkv2(8);
	cout<<endl;


	void (*me)(int n) = &mk;					// 声明一个人,人名叫 me ,现在这个人也有个叫 mk的替身;
	me(9);
	mk(8);
	me = kk;									// 替身在拥有替身的人之间是通用的 
	me(9);
	kk(8); 
	cout<<endl;
	
	me = &him;									// 我的替身
	me(99);
	me = &she;									// 我的替身 
	me(99999);
	
	
	void (*myteacher)(int age)=&him;			// 我的老师 
	myteacher(100);
	


//可以看到,原来每一次产生一个指针,都要写一堆参数,而typedef 定义之后,可以一个词结束战斗 

	return 0;
}

  • 17
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值