关于C语言函数指针的问题?
发布网友
发布时间:2022-04-23 09:42
我来回答
共2个回答
热心网友
时间:2023-10-09 21:08
首先,编译器对于很多操作都有隐式转换.
其次,函数指针指向的是编译后的函数代码(机器指令)的首地址.
因此你用星号操作指针难道要访问指令吗?函数唯一的访问方式就是调用,因此编译器做了默认处理,无论有没有星号都是调用函数,这种由编译器自动决定操作叫隐式转换.(其他编译器有可能会报错)
PS:尽量不要利用隐式转换而偷懒,因为依赖编译器的自动功能会存在安全隐患,因为不同的编译器隐式转换有所不同,代码还是明确点比较安全.因为即便更新编译器版本你的程序也不会出问题.
热心网友
时间:2023-10-09 21:09
你好,
我也一脸茫然,于是去百度了:C语言-函数指针与函数名的区别***
得出结论:
函数名的使用基本等价于函数指针,函数名、取地址&、取内容*得到的都是函数的地址。
函数名也可以(* <函数名>)()来调用,只是这种方法读写都不方便,所以被简化了。
函数名和数组名实际上都不是指针,但是,在使用时可以退化成指针,即编译器可以帮助我们实现自动的转换。
题主可以自己百度一下:C语言-函数指针与函数名的区别***
果然我还是很无知的。
祝你生活愉快。