A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 蔡雨生 中级黑马   /  2015-9-18 21:34  /  711 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

指针与函数
关于函数和指针之间的关系,无非就是函数指针和指针函数.
函数指针就是指针,而这个指针是指向函数的.
指针函数就是函数.它是一个返回值类型为指针的函数.

下面用一段代码,帮朋友们理解一下关系.
#include <stdio.h>
int *add(int *p);
int add1(int a);
int add2(int (*p3)(int));

int main(){
   
    int a=1;
    int *p=&a;
    int*p1=add(p);
    printf("p=%p---P1=%p\n",p,p1);
   
    /*
     定义:函数返回值类型 (*指针名)(参数类型);赋值:指针名=函数名;
     如:先定义函数int add(int a){ //...}. int (*p)(int)=add;
     使用:指针名(实参); 如:p(3);等效于add(3);
     */
   
    //定义:函数返回值类型 (*指针名)(参数类型);
    int (*p3)(int);
   
    //赋值:指针名=函数名;
    p3=add1;
   
    //使用:指针名(实参); 如:p(3);等效于add(3);
    int b=p3(3);
    printf("%d\n",b);
   
    //1.函数指针做加减运算可以,但没有意义.不建议.
    add2(p3);
    return 0;
   
}

//2.函数指针可以当作参数传递.因为其是一个指针类型.
int add2(int (*p3)(int)){
   
    p3(5);//等效于:add1(5);
    return 0;
   
}

int add1(int a){
   
    printf("hello\n");
    return 0;
   
}

/*
一,什么是指针型函数?
是函数. 这个函数的返回值类型是指针;
定义:类型 * 函数名(参数){return 指针类型;}
如:int  *add(int *a){return &a;}.
表示定义一个返回值是int指针类型的add函数.
*/

int *add(int *p){
   
    return p;
}

评分

参与人数 2黑马币 +14 收起 理由
XHYY + 8 赞一个! 不错
huahaoL + 6 神马都是浮云

查看全部评分

2 个回复

倒序浏览
可以的,,回去还学习?
回复 使用道具 举报
好好,不错错!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马