轻松搞定C语言指针的方法!太小菜了!以理解(*(void (*)())t)()为例
在C语言里,指针的问题觉得很复杂么?学习指针时,是不是常常被星星撞得很晕?比如说:
(*(void (*)())t)() 的含义是什么?
晕菜么?不然,下面和小编一起,轻松搞定它!
先明确“void (*)()”的含义:它表示一个数据类型,这个数据类型是个函数的指针,所指向的函数无参数无返回值。
你怎么知道?如果用“指针的定义形式逆序阅读法”解决,就是小菜一碟!
好书
“指针的定义形式逆序阅读法”是优选C语言教材《C语言其实很简单》里介绍的众多的攻克指针难题的方法之一,是比较独到的方法,一般C书鲜见之。
关于该方法书中介绍截图如下:
“void (*p)()”什么意思?按照上面的方法,应先读 *,读作p是指针,指向函数(第二对小括号读作“函数”,第二对小括号内为空,说明这样的函数无参数),继续接着读——函数的返回值为void(即无返回值)。
好了,回到开始的问题,“void (*)()”的含义:
它表示一个数据类型,这个数据类型是个函数的指针,所指向的函数无参数无返回值。
搞定了吧?!
(void (*)())t 则是把 t 转换为这种数据类型,然后取*则调用所指的函数(所以t里保存的内容应该是一个函数的地址啦),最后的()内就是它的参数,由于无参,所以()内为空!
一本好书、一个好的方法,不仅使你由菜鸟轻松入门,更是你迈向高手的阶梯!
了解旬月轻松考过甚至轻松考优秀的正确方法,后台(不是文末留言)回复:学习方法
赞 (0)