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的指针与函数指针非常像