day12 函数指针

来源:互联网 发布:qr分解求逆矩阵 编辑:程序博客网 时间:2024/05/22 01:59
1.函数指针:指向函数的指针就是函数指针,由于函数名里面存储的就是函数的首地址,即函数指针是指向函数名的指针

2.定义指针的格式 :指针类型修饰符   *指针变量名   =  初始化
            float  *f  = NuLL
3.如何定义一个函数指针,其步骤:a.将函数名去掉用(*)替代   b.如果有参数将参数名去掉,只保留参数类型
eg:int  * sum(int a,int b);——>int  (*)(int a,int b);——>int (*)  (int ,int);

4.如何定义函数指针变量
格式 :返回值类型      (*函数指针变量名) (参数类型列表) =  初始值
a.无参函数类型  void (*hello)() = NULL,hello 就是韩式指针变量名

b.有参数类型   int (*Sum)(int,int) = NULL;注意在书写函数指针变量名的时候,不能和函数名重名
5.函数指针变量的使用
下面是一个函数
void (*hello)() = NULL
sayHello(){
   printf("hello\n");
}
hello   = sayHello;将函数的地址赋值给指针变量,函数名中存储的就是函数的地址
直接访问函数,直接调用函数
sayHello();小括号()叫做函数的调用符
间接地访问函数==间接地调用函数
hello();

6.定义函数指针变量需要注意的内容:a.确定函数指针的类型  b.指针变量名不能于函数重名 c.有参数的指针变量只写参数类型


7.通过函数指针变量调用函数需要注意的内容: a.调用无惨函数时指针变量后的()小括号是不能省略的     b.调用有参的函数()小括号内一定要写入参数,而且参数的个数一定要和函数的形参个数类型保持一致

8.同一个函数指针可以指向不同函数,前提指向的那些函数的类型要一样,也就是说定义一个函数指针不只是只能指向一个函数,而是,可以指向同一类型函数

9.给函数指针类型其别名的格式:
typedef   返回值类型  (*函数指针新类型名)  (参数类型列表)
eg:typedef   int (*FUN)(int  ,int);
使用新的函数指针类型定义函数指针变量
FUN   p   = sum;
int  (*p) (int ,int) = sum;
int result1 =p(4,6);
printf("%d\n",result1);


10.回调函数 :函数指针作为函数的参数,函数的地址作为参数传入函数的内部,在内部又调用函数指针指向的函数























0 0
原创粉丝点击