函数指针和指针函数从外观上来看只有一个括号的区别

函数指针 int (*add)(int a,int b);
指针函数 int *add(int a,int b);

使用函数指针可以将该指针指向任意函数的首地址,可以在源码编译阶段就定义好机器指令,通过函数指针指向这段机器指令的首地址(C语言编译时,函数将被直接编译成机器指令),从而让c语言直接执行机器指令提升效率更贴近底层。

指针函数表示的是一个函数,但是函数返回的值是一个指针。

函数指针是一个指针,普通的指针指向一个变量的内存地址,但是该指针指向的是一个函数的首地址。

#include<stdio.h>
//声明指针函数
int *add(int a,int b);
int main(){
    int a=5;
    int b=3;
    //调用指针函数,该函数最后返回的是一个int类型的变量内存地址,所以要用符合条件的指针来接收
    int *c=add(a,b);
    //这里打印的是变量c的内存地址 例如: c=0xbf9932e4
    printf("c=%p \n",c);
    return 0;
}
//定义指针函数
int *add(int a,int b){
    int c=a+b;
    //这里返回的是变量c的内存地址
    return &c;
}
#include<stdio.h>
//声明函数指针 addPointer
int(*addPointer)(int a,int b);
//声明一个普通函数
int add(int a,int b);

int main(){
    int a=3;
    int b=5;
    //初始化函数指针addPointer,将其指向add方法
    addPointer=add;
    //调用函数指针指向的函数
    int c=addPointer(a,b);
    printf(" c=%d \n",c);
    return 0;
}

int add(int a,int b){
    int c=a+b;
    return c;
}

 

posted on 2020-09-03 14:42  Vinlen  阅读(514)  评论(0编辑  收藏  举报