C语言指针与函数的关系
一:
函数和指针关系:
1)指向函数的指针
2)指针作为函数的参数
int max(int *p1,int *p2){
}
1)实参可以是一个指针
2)也可以是一个和形参类型相同的数组的数组名
3)返回值是指针的函数:
指针函数
char* 函数名(){
return 地址
}
//返回值是一个字符串指针
char * test(){
return "xxxx";
}
char * test2(){
char ch='a';
return &ch;
}
二: 函数的指针:
1) 指向函数的指针
函数在内存中都会划分一块独立的内存区域,函数名代表了函数的内存首地址
代表内存首地址:数组名 变量名 函数名 结构体名
2) 函数指针:
用来存放函数地址的指针变量
格式:
int max(int x,int y){
return x>y?x:y;
}
int sum(int x,int y){
return x+y;
}
int * getMax(int x,int y){
return x>y?&x:&y;
}
声明的格式
int max(int x,int y);
通过声明推出函数指针
返回值类型 (*指针变量名)(函数的参数);
//定义了一个函数指针变量p,p可以指向所有返回值是int,
//有两个整形参数的 函数
int (*p)(int x,int y);
注意:定义函数指针的时候,可以不指定形参变量名,但是类型不能省略
int (*p1)(int,int);
3)函数指针的使用
(1)给函数指针初始化
int (*p)(int x,int y);
//用函数名初始化 函数指针
p = sum;
(2)用指针变量调用函数
p(4,5);
优点:让函数的调用更灵活
OC中得block中指向block的指针与函数指针非常像