简要说明C语言中指针函数与函数指针的区别
发布时间:2020-12-16 05:26:09 所属栏目:百科 来源:网络整理
导读:指针函数一般是指返回指针的函数; #include stdio.h int* fun(int *a) { return a; } int main(int argc,char **argv) { int a = 3; printf("%d",*(fun( return 0; } 函数指针是表示指向函数开始地址的指针: 首先要了解函数的调用过程: #include stdio.h
|
指针函数一般是指返回指针的函数;
#include <stdio.h>
int* fun(int *a)
{
return a;
}
int main(int argc,char **argv)
{
int a = 3;
printf("%d",*(fun(&a)));
return 0;
}
#include <stdio.h>
int fun(int i)
{
return i + 1;
}
int main(int argc,char **argv)
{
int r;
//r = fun(5);
r = (*fun)(5); //调用方式
printf("%dn",r);
return 0;
}
函数可以用r = (*fun)(5);来调用,说明函数名其实是一个指针,
#include <stdio.h>
int fun(int i)
{
return i + 1;
}
int main(int argc,char **argv)
{
int r;
int (*funP)(int); //声明指针
//funP = fun; //给指针赋值
funP = &fun;
r = funP(5);
printf("%dn",r);
return 0;
}
#include <stdio.h>
int fun(int i)
{
return i + 1;
}
int main(int argc,char **argv)
{
int r;
int (*funP)(int); //声明指针
funP = fun; //给指针赋值
//r = funP(5);
r = (*funP)(5); //调用
printf("%dn",r);
return 0;
}
也就是说,除了声明的地方,fun()与(*fun)()的作用是一样的。
#include <stdio.h>
int funA(int i)
{
return i + 1;
}
int funB(int i)
{
return i - 1;
}
void fun(int (*funP)(int),int i)
{
printf("%dn",funP(i));
}
int main(int argc,char **argv)
{
int (*funP)(int); //声明指针
funP = funA; //给指针赋值
//funP = funB; //给指针赋值
fun(funP,5); //调用
return 0;
}
在fun()函数里,它做的只是在某个时候调用一个funP指针指向的函数,至于是哪个函数,在fun函数的定义处还无从得知;直到将funA赋给函数指针funP,funP具体要做什么功能,才得以确定。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
