函数指针声明是否需带参数名?两种写法的功能差异解析
两种函数指针声明的差异分析
这两种写法没有任何功能差异,纯粹是代码风格的区别。
在C语言中,函数指针声明的参数列表里,参数变量名属于可选的冗余信息——编译器只会识别参数的类型,完全忽略这些名称。不管你写不写var,编译器都会将function_ptr的类型解析为void (*)(int),也就是指向“接受一个int类型参数、返回值为void”的函数指针。
比如你给出的两个示例:
- 声明1:
void (*function_ptr)(int) = &function; - 声明2:
void (*function_ptr)(int var) = &function;
最终function_ptr的类型完全一致,调用function_ptr(5)时的行为也没有任何区别。
带参数名的写法唯一的作用是提升代码可读性,能让后续阅读代码的人快速理解该参数的用途,但对编译结果、程序运行逻辑没有任何影响。
内容的提问来源于stack exchange,提问作者uC_dev_imposter
相关产品推荐
相关产品推荐

