任何类型指针指向的变量的类型相同才能进行比较,为什么任何类型的指针都可以和NULL进行比较?#define NULL (void *) 0还有就是函数指针如何使用啊?#includeint fun(int a){printf("%d\n",a*a);return 0;}int main(
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/17 11:44:30
任何类型指针指向的变量的类型相同才能进行比较,为什么任何类型的指针都可以和NULL进行比较?#define NULL (void *) 0还有就是函数指针如何使用啊?#includeint fun(int a){printf("%d\n",a*a);return 0;}int main(
任何类型指针指向的变量的类型相同才能进行比较,为什么任何类型的指针都可以和NULL进行比较?
#define NULL (void *) 0
还有就是函数指针如何使用啊?
#include
int fun(int a)
{
printf("%d\n",a*a);
return 0;
}
int main()
{
int (*p)(int);
p = fun;
p(5);
fun(5);
(*fun)(5);
(&fun)(5);
(*p)(5);
getch();
return 0;
}
结果是什么?重要的是原因
任何类型指针指向的变量的类型相同才能进行比较,为什么任何类型的指针都可以和NULL进行比较?#define NULL (void *) 0还有就是函数指针如何使用啊?#includeint fun(int a){printf("%d\n",a*a);return 0;}int main(
#define NULL (void *) 0
因为NULL是(void*)类型,而任何指针都可以(显性或隐性地)转化成(void*),这使得比较成为可能.
int (*p)(int); //函数指针,可以用来指向任何一个返回int,带一个int类型参数的函数
p = fun; //指向fun这个函数
p(5); //等同于fun(5),打印25
fun(5);//打印25
(*fun)(5);//打印25
(&fun)(5);//&fun是p,等同于p(5),还是打印25
(*p)(5); //打印25
这里的要点在于:p(5)和(*p)(5),fun(5)和(fun*)(5)是一回事,这是C标准规定的
另外,fun本身也是一个函数指针.
记住:任何函数名,本身也是个函数指针.我们对函数的调用就是通过函数指针来实现的.