c语言函数怎么看数据类型(如何看待c语言函数指针typedef)

typedef void (*IapFun)(void); jump2app = (iapfun) * (vu32 *)(appxaddr 4); //用户代码区第二个字为程序开始地址(复位地址) MSR_MSP(*(vu32 *)appxaddr); //初始化APP堆栈指针(用户代码区的第一个字用于存放栈顶地址) jump2app(); //跳转到APP.,接下来我们就来聊聊关于c语言函数怎么看数据类型?以下内容大家不妨参考一二希望能帮到您!

c语言函数怎么看数据类型(如何看待c语言函数指针typedef)

c语言函数怎么看数据类型

typedef void (*IapFun)(void); jump2app = (iapfun) * (vu32 *)(appxaddr 4); //用户代码区第二个字为程序开始地址(复位地址) MSR_MSP(*(vu32 *)appxaddr); //初始化APP堆栈指针(用户代码区的第一个字用于存放栈顶地址) jump2app(); //跳转到APP.

对这段代码有种熟悉的陌生感,遂特此记录,以供日后察看.

typedef的意义

typedef int a[10]; // a 类型是 int[10];(存放int型数据的数组) a arr; // 定义一个数组:int arr[3]; typedef void (*p)(void); //p 类型是void ( * )void p A; //是指void(*A)(void);

语法上typedef属于存储类声明说明符。a[10]不是int的别名,(*p)(void)不是void的别名。上面的语句把a声明为具有10个int元素的数组的类型别名,p是一种函数指针的类型别名。定义一个函数指针类型。比如原函数是

void func(void);

那么定义的函数指针类型就是

typedef void (*Fun)(void);

然后用此类型生成一个指向函数的指针:

Fun func1;

当func1获取函数地址之后,那么你就可以向调用原函数那样来使用这个函数指针:

func1(void);

函数指针对象赋值用法

两种用法

typedef void (*IapFun)(void); //定义函数指针 void func(void); //定义函数 IapFun fun = func; //为函数指针对象赋值 fun(); //这里的fun()其实就相当于跳转到了func()里

typedef void (* IapFun)(void); //定义函数指针 IapFun jump2app; //定义函数指针对象 jump2app=(IapFun) * (vu32*)(appxaddr 4); //为函数指针对象赋值 appxaddr为函数指针地址,例如0x08000000 jump2app(); //调用函数

来自技术让梦想更伟大

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页