zoukankan      html  css  js  c++  java
  • 指针函数和函数指针的区别

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

    函数指针 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 
    ",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 
    ",c);
        return 0;
    }
    
    int add(int a,int b){
        int c=a+b;
        return c;
    }
    不和别人一样,不复制只真正理解
  • 相关阅读:
    正则表达式的单行模式和多行模式
    js 正则匹配(去掉html标签)
    ES6中set和map的区别
    回调函数的使用场合
    javascript逻辑运算符“||”和“&&”
    [bzoj3210]花神的浇花集会
    [bzoj2438][中山市选2011]杀人游戏
    [bzoj2743][HEOI2012]采花
    [luoguP3729]曼哈顿计划EX
    [bzoj4850][Jsoi2016]灯塔
  • 原文地址:https://www.cnblogs.com/Vinlen/p/13607452.html
Copyright © 2011-2022 走看看