函数指针和指针函数是不是一个东西?
这两个我们之前都有讲过,但是并没有放在一起比较过。
函数指针的本质是指针,就跟整型指针、字符指针一样,函数指针指向的是一个函数。
每个函数在内存中都会有一个地址,函数调用就是跳转到这个地址开始执行,而函数指针就是记录这个地址的变量。
定义起来稍微有点麻烦:
#include比如test函数,想要记录他的地址,可以这样定义指针p:int test(int a) { return a; } int main() { int (*p)(int) = test; return 0; }
int (*p)(int) = test;p是个指针,指向函数,函数有一个int类型的参数,函数的返回值是int。
test(1); p(1);函数指针有什么用?
int *test() { int array[5] = {0}; return array; }这是一个典型的错误,切记不能返回局部变量的地址,因为函数调用完毕,内存释放,即使返回了这个地址,也不能使用。
int *(*p)() = test;意思就是定义一个指针,让他指向刚才的指针函数,这就是C语言中的复杂类型声明,开发中确实很少会用到,但是笔试中出现的概率高达80%,所以,不要觉得它没用,想要学好C语言,务必得学会分析。
全部0条评论
快来发表一下你的评论吧 !