对于刚学习的变成语言,总是会发现指针函数和函数指针这两个东西实在是分不明白.
在这里我想简单的说一下,如何分别:
指针函数和函数指针.
指针函数 - 指针型函数
函数指针 - 函数型指针
指针型函数 - 就是指针为主函数为辅,首先要看起来要像一个指针:
void *p_add(int a,int b);
函数型指针 - 就是函数为主指针为辅,首先要看起来要像一个函数:
void (*p_add)(int a,int b);
对于这两个函数的声明,可能有些人分不清,什么叫看起来像一个指针,什么叫看起来像一个函数
这就要根据优先级的问题了.由于括号的优先级比*(符号) 的优先级大.
所以在这两个符号在一起的时候,就要看好他们先和谁结合,
解释一下:
void *p_add(int a,int b);
由于()比*(符号) 的优先级大,所以p_add要先和()结合,这样后结合的便是*(符号)
这样就看来像一个指针了
void *(p_add(int a,int b));我们要把后面的看成一个,虽然很难看成,但是我希望大家;要有
一丢丢的想象力.
void (*p_add) (int a,int b);
由于(*p_add) 有括号了,如果出现了两个括号怎么办啊,这就要从左到右的计算了,
这样就非常的像一个函数了,(要有一丢丢的想象力)
要有一丢丢的想象力!!!!!!!