关于指向函数的指针的疑问

时间:2015-05-04 08:11:53

标签: function function-pointers

 #define IAP_LOCATION 0X1F00FFFF

 int iap_program(unsigned int target_addr, unsigned int source_addr)
 {
   typedef void(*IAP)(unsigned int[], unsigned int[]);
   IAP iap_entry;

   iap_entry = (IAP) IAP_LOCATION;

   command[0] = 50;                              // prepare the sector for write operation
   command[1] = 7;                               // start sector no
   command[2] = 7;                               // end sector no
   iap_entry (command, result); 
 }

在上面的代码中,我对行IAP iap_entry感到困惑; IAP是一个函数指针.IAP iap_entry和iap_entry =(IAP)IAP_LOCATION;意思?

我习惯使用下面给出的样式的函数指针

 float funct(float num1, float num2 ) 
 {
  return num1 * num2; 
 }

 typedef float(*pt2Func)(float, float);

 pt2Func *FnPtr = &funct;

 float result = (*FnPtr)(2.0, 5.1);
}

1 个答案:

答案 0 :(得分:0)

IAP 不是一个函数指针。它是一个函数指针 type 。 (与int是数字类型的方式相同,而不是数字本身)

iap_entry 类型为IAP的函数指针。

(IAP) IAP_LOCATION也是类型为IAP的函数指针,是通过将整数转换为指针而生成的。