今天学习了一下函数指针和指针函数的区别,函数指针是指向函数的指针,它的定义方式为:int (*f)();指针函数是返回指针的函数,它的定义方式为:int *f()。
写了一个小程序来测验了一下指针函数。
int *func(int *a,int *b);
const int TAB[] = {0x0051,0x1011,0x1111,0x2222};
void main(void)
{
int *rom_ptr;
int i,*m,*n;
m = TAB;
n = TAB+1;
rom_ptr = func; //获得func函数的首地址
i = func(m,n);
}
int *func(int *a,int *b)
{
int *p1,*p2;
p1 = a;
p2 = b;
return *p1 + *p2;
}
上面用到的是指针函数,函数int *func(int *a,int *b)返回的是指向整形数的指针,主要看调用的格式应该是i = func(m,n); 而不是i = *func(m,n);或者i = func(*m,*n); 最后的结果是i=0x1062。从上面可以看到,获得函数首地址的一种方法是直接
rom_ptr = func; 就可以了。
下面这段程序是函数指针的用法:
int func(int a,int b);
void main(void)
{
int i,m=1,n=2;
int (*f)(int,int); //定义了一个函数指针;
f = func; //将函数func的首地址赋给f,使它指向函数func;
i = (*f)(m,n); //通过指针f调用函数func
}
int func(int a,int b)
{
return (a+b);
}
上面这段程序定义了一个指向函数int func(int a,int b)的指针int (*f)(int,int),得到的结果为 i="3"。
指针函数 是一个(返回指针的)函数,函数指针 是一个(指向函数的)指针。
|