1.指针函数,是指返回值为指针的函数,所以本质上是一个函数,所以要么是一个函数的声明,要么是一个函数的定义。函数名是一个指针变量,函数名这个变量的值为函数代码块在内存中的首地址。
eg. int *fun(int x,int y){};//fun 是一个函数,它的返回值是int*.
2.函数指针 ,是一个保存函数代码块首地址的指针,是一个指针变量。也就是说函数指针指向函数的入口地址。
eg. int (*fun)(int x,int y);// fun 是返回值是int的函数指针
int *(*fun)(int x,int y);// fun 是返回值是 int *的函数指针
3.说明实例
#include <stdio.h>
#include <stdlib.h>
//int *p=NULL;
int b=10;
int *fun (){
//int a=10;
return &b;
}
int *(*fun1)();
int main(void){
printf("hello,fun1\n");
fun1=fun;
printf("return is %d\n",*(fun1()));
return 1;
}
也可以这么写
#include <stdio.h>
#include <stdlib.h>
//int *p=NULL;
int b=10;
int fun (){
//int a=10;
return b;
}
int (*fun1)();
int main(void){
printf("hello,fun1\n");
fun1=fun;
printf("return is %d\n",(fun1()));
return 1;
}
eg. int *fun(int x,int y){};//fun 是一个函数,它的返回值是int*.
2.函数指针 ,是一个保存函数代码块首地址的指针,是一个指针变量。也就是说函数指针指向函数的入口地址。
eg. int (*fun)(int x,int y);// fun 是返回值是int的函数指针
int *(*fun)(int x,int y);// fun 是返回值是 int *的函数指针
3.说明实例
#include <stdio.h>
#include <stdlib.h>
//int *p=NULL;
int b=10;
int *fun (){
//int a=10;
return &b;
}
int *(*fun1)();
int main(void){
printf("hello,fun1\n");
fun1=fun;
printf("return is %d\n",*(fun1()));
return 1;
}
也可以这么写
#include <stdio.h>
#include <stdlib.h>
//int *p=NULL;
int b=10;
int fun (){
//int a=10;
return b;
}
int (*fun1)();
int main(void){
printf("hello,fun1\n");
fun1=fun;
printf("return is %d\n",(fun1()));
return 1;
}