黑马程序员技术交流社区

标题: 关于指针和函数关系的思考 [打印本页]

作者: 蔡雨生    时间: 2015-9-18 21:34
标题: 关于指针和函数关系的思考
指针与函数
关于函数和指针之间的关系,无非就是函数指针和指针函数.
函数指针就是指针,而这个指针是指向函数的.
指针函数就是函数.它是一个返回值类型为指针的函数.

下面用一段代码,帮朋友们理解一下关系.
#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;
}


作者: huahaoL    时间: 2015-9-18 21:36
可以的,,回去还学习?
作者: 15738320440    时间: 2015-9-18 21:40
好好,不错错!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2