黑马程序员技术交流社区
标题: 关于指针和函数关系的思考 [打印本页]
作者: 蔡雨生 时间: 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 |