C语言 ( * ( void ( * ) ( ) ) 0 ) ( ) 的理解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fengfeng0328/article/details/85949805

如果你是一名新C手,看到 ( * ( void ( * ) ( ) ) 0 ) ( ) 这种奇葩的表达式,肯定会懵逼,其实不用慌,既然编译器能够理解,那么人类也必定能够理解,不要忘记编译器是人类设计的

1.里面看 void ( * ) ( ) 是一个函数指针

2.再看 ( void ( * ) ( ) ) 0 )  表示把 0 强制转换为函数指针类型

3.简化 ( void ( * ) ( ) ) 0 ) 为一个函数指针 P

4.简化 ( * ( void ( * ) ( ) ) 0 ) ( ) 为 ( *P ) ( ) 即利用函数指针 P 调用函数

5.P是指向地址 0 的,所以这句表达式的作用就是让程序指针 PC 跳到地址 0

猜你喜欢

转载自blog.csdn.net/fengfeng0328/article/details/85949805