请问这两句是什么意思?从来没见过。

[复制链接]
查看11 | 回复4 | 2010-8-30 17:31:06 | 显示全部楼层 |阅读模式
void f1(int *, int);
void f2(int *, int);
void(*p[2]) ( int *, int);
main()
{
int a;
int b;
p[0] = f1;
p[1] = f2;
a=3;
b=5;
p[0](&a , b);
printf("%d\t %d\t" , a ,b);
p[1](&a , b);
printf("%d\t %d\t" , a ,b);
}
void f1( int* p , int q)
{
int tmp;
tmp =*p;
*p = q;
q= tmp;
}
void f2( int* p , int q)
{
int tmp;
tmp =*p;
*p = q;
q= tmp;
}
下面这两行:
p[0] = f1;
p[1] = f2;
函数怎么可以赋值给数组?
谢谢了!

回复

使用道具 举报

千问 | 2010-8-30 17:31:06 | 显示全部楼层
这个声明void(*p[2]) ( int *, int);是声明了一个函数指针,函数指针的意思是这个指针指向函数的入口地址,声明的函数指针的参数应该和该指针指向的函数的参数类型合格数一致,否则会报错。所以,在这里p[0]指向函数f1,p[1]指向函数f2。调用p[0]相当于调用函数f0,调用p[1]相当于调用f2。
回复

使用道具 举报

千问 | 2010-8-30 17:31:06 | 显示全部楼层
这个概念 叫做 :函数指针P[]叫做函数指针数组函数指针 是指向函数名的指针函数名本身也是一个地址指针是一个地址那么函数名就可以赋值给指针。你上网搜索一下函数指针 就能找到这个概念以及相关的示例了。
回复

使用道具 举报

千问 | 2010-8-30 17:31:06 | 显示全部楼层
指针 指向函数void(*p[2]) ( int *, int); 这句定义了函数指针
回复

使用道具 举报

千问 | 2010-8-30 17:31:06 | 显示全部楼层
指向了函数的地址就是说P[0]就是F1了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行