学术论文中遇到奇怪的C构造
发布时间:2020-12-16 10:17:18 所属栏目:百科 来源:网络整理
导读:代码说明: 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
代码说明:
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 pointer typedef void (*print_function)(char *msg); // log_msg is a variable of the type print_function: it points to a function print_function log_msg = printf; // point to printf 后来,它只是通过函数指针调用该函数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |