大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
函数指针告诉CPU下一步需要执行哪里的代码的指针, 一数组十分相像.
成都创新互联公司于2013年创立,是专业互联网技术服务公司,拥有项目做网站、成都网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元南沙做网站,已为上家服务,为南沙各地企业和个人服务,联系电话:13518219792
#include stdio.h
void function(int i, double d) //一个函数的声明
{
printf("函数运行, %d, %lf\n", i, d);
}
void AnotherFunction(int i, double d) //另外一个函数声明
{
printf("又一个函数运行, %d, %lf\n", i, d);
}
int main()
{
void (*pFun)(int, double); //定义了一个函数指针
int (*p)(int , double); //用于调试的函数指针
pFun = function; //让这个函数指针指向第一个函数
pFun(10, 10.101); //通过这个函数指针来调用第一个函数
pFun = AnotherFunction; //让这个函数指针指向第二个函数
pFun(20, 20.202); //通过这个函数指针来调用第二个函数
//若将以下代码取消注释, 就会产生错误
/*
p = function;
p = AnotherFunction;
//原因很简单, 因为p是必须指向一个返回值为int, 第一个参数为int, 第二个参数为double的函数, 但是在此代码中定义的函数返回值是void
*/
//这个实验中, 直接用函数名来赋值了, 是因为函数名其实就是这个函数的指针
//而在平常调用函数时, 都要加上(), 如:printf("");
//这里, "()"就相当于'*'(就是取值运算符), printf是函数指针, 就相当于是数组名, 即数组的首地址
return 0;
}
函数指针是指向函数的指针变量。 因而“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。
函数指针有两个用途:调用函数和做函数的参数。
函数指针的声明方法为:
返回值类型 ( * 指针变量名) ([形参列表]);
如:
int func(int x); /* 声明一个函数 */
int (*f) (int x); /* 声明一个函数指针 */
f=func; /* 将func函数的首地址赋给指针f */
或者使用下面的方法将函数地址赋给函数指针:
f = func;
赋值时函数func不带括号,也不带参数,由于func代表函数的首地址,因此经过赋值以后,指针f就指向函数func(x)的代码的首地址。
下面的程序说明了函数指针调用函数的方法:
#includestdio.h
int max(int x,int y){return (xy? x:y);}
int main()
{
int (*ptr)(int, int);
int a, b, c;
ptr = max;
scanf("%d%d", a, b);
c = (*ptr)(a,b);
printf("a=%d, b=%d, max=%d", a, b, c);
return 0;
}
#include stdio.h
#includestdlib.h
#includestring.h /*头文件*/
int find(char srt[],char xCh); /*函数要声明*/
void main() /*main()不是这样写吧*/
{
int cs; /*i时什么东西*/
char a,k[100]; /*char a,k;字符串数组不是这样声明*/
/*int find(char srt,char xCh);这个放到上面声明*/
/*clrscr();这个有什么用?*/
printf("input a char\n");
scanf("%c",a); /*scanf("%s",a);错*/
printf("input a find\n");
scanf("%s",k);
cs=find(k,a); /*cs=find(a,k);*/
printf("%d\n",cs);
}
int find(char srt[],char xCh) /*int findchar srt,char xCh要用()这个,不能用还有错误自己对照*/
{
int j,cs=0,len=strlen(srt);
char*p; /* int *p;*/
p=srt;
/*下面这部分自己看,和你自己的对照一下*/
for(j=0;jlen;j++)
{
if(*(p+j)==xCh)
{
cs++;
printf("%d \n",j);} }
/*这个干吗用?*/
return(cs);
}
/*改了我好长时间,给分啊~~~*/