原创 函数指针和指针函数

2009-9-18 19:15 1894 2 2 分类: MCU/ 嵌入式

今天学习了一下函数指针和指针函数的区别,函数指针是指向函数的指针,它的定义方式为: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"。


指针函数 是一个(返回指针的)函数,函数指针 是一个(指向函数的)指针。


 

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
2
关闭 站长推荐上一条 /3 下一条