c/c++语言开发共享function指针 – 自动解除引用


可能重复:
如何解除引用函数指针?

void myprint(char* x) { printf("%sn", x); } int main() { char* s = "hello"; void (*test)(char*); void (*test2)(char*); test = myprint; test2 = &myprint; test(s); (*test)(s); test2(s); (*test2)(s); } 

任何人都可以向我解释为什么以上所有代码都有效? “你好”打印四次。 通过应用函数指针,它是否隐式解除了? 基本上我想知道函数指针是如何实际存储的,因为上面的内容有点令人困惑。

    这只是C的一个怪癖。没有其他原因,但C标准只是说取消引用或获取函数的地址只是计算指向该函数的指针,并且取消引用函数指针只是计算回函数指针。

    这种行为(因此显然)与一元&*运算符对正常变量的工作方式非常不同。

    所以,

     test2 = myprint; test2 = &myprint; test2 = *myprint; test2 = **********myprint; 

    所有只是做完全相同,给你一个指向myprint的函数指针

    同样的,

     test2(s); (*test2)(s); (***********test2)(s); 

    同样,调用存储在test2的函数指针。 因为C说它确实如此。

    需要了解更多c/c++开发分享function指针 – 自动解除引用,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享function指针 – 自动解除引用相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/979813.html

      (0)
      上一篇 2021年12月13日
      下一篇 2021年12月13日

      精彩推荐