学术论文中遇到奇怪的C构造

学术论文中遇到奇怪的C构造,第1张

概述代码说明: void (* log_msg)(char *msg) =printf;void change_and_log(int *buffer, int offset, int value){ buffer[offset] = value; log_msg("changed");} 我最关心的是第一部分: 首先,签名void(* log_msg)(char * m 代码说明:

voID (* log_msg)(char *msg)    =printf;voID change_and_log(int *buffer,int offset,int value){    buffer[offset] = value;    log_msg("changed");}

我最关心的是第一部分:

首先,签名voID(* log_msg)(char * msg)是什么意思?这段代码只是将函数log_msg映射到printf吗?在这种情况下,为什么函数名称(* log_msg)而不仅仅是log_msg?

解决方法 这是一个 function pointer.

函数指针的类型是R(*)(Args …),其中R和Args …被返回类型和参数替换,如果有的话.它被读作“指向带参数Args …并返回R的函数的指针”.

您的代码将更容易阅读:

// print_function is a type that is a function pointertypedef voID (*print_function)(char *msg); // log_msg is a variable of the type print_function: it points to a functionprint_function log_msg = printf; // point to printf

后来,它只是通过函数指针调用该函数.

总结

以上是内存溢出为你收集整理的学术论文中遇到奇怪的C构造全部内容,希望文章能够帮你解决学术论文中遇到奇怪的C构造所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1218976.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存