什么是功能指针?

时间:2014-03-27 04:14:08

标签: c function callback function-pointers

什么是普通英语的功能指针?

4 个答案:

答案 0 :(得分:1)

用简单的英语,

  

FUNCTION_POINTER是一个指向地址的指针   功能的第一条指令,就像指向指针的指针   变量的地址。

举一个程序的例子来理解这个概念

  

所有整数的总和直到用户i / p

-

#include <stdio.h>

int IsAny(long n)
{
    return 1;
}

long AddIf(long limit, int (*funPointer)(long))
{
    long sum = 0;
    register int i;

    for(i = 1; i <= limit; ++i)
    {
        if(funPointer(i))
            sum += i;
    }

    return sum;
}

int main(void)
{
    long l, total;

    printf("Enter a positive integer: ");
    scanf("%ld", &l);

    total = AddIf(l, IsAny);
    printf("Sum of all integers upto %ld is %ld\n", l, total);
}

这里调用FUNCTION_POINTER来调用IsAny中的AddIf函数并声明  作为int (*funPointer)(long))函数中的AddIf

答案 1 :(得分:1)

正如你用简单的英语问的那样,让我们​​试一试。

指针是内存中的地址。指针有一个类型,因此程序可以“找到”使用指针时引用的对象。

函数指针使用相同的逻辑。它声明了一个将使用的函数有一个例子的方法参数。所以你知道你将使用一个在该方法中有输入和输出的函数,但不需要知道该函数中的逻辑。

从那里你可以发送任何函数指针作为程序使用,只关心你将发送和接收预定义类型。

答案 2 :(得分:1)

根据维基

函数指针(或子例程pointer或过程指针)是third-generation programming languages支持的一种指针(例如PL/ICOBOLFortran1 dBASE dBL,C)和object-oriented programming languages(例如C++D)。2而非引用数据值,函数指针指向内存中的可执行代码。当dereferenced时,函数指针可用于调用它指向的function并将其传递给正则函数调用。这种调用也称为&#34;间接&#34;调用,因为函数是通过变量间接调用而不是直接通过固定名称或地址调用。通过提供一种基于运行时值选择要执行的函数的简单方法,函数指针可用于简化代码。

答案 3 :(得分:0)

Pointer =保存变量的地址或意味着简单的内存。 与指针一样,函数指针包含函数的地址。

语法: 返回类型(* fp)(参数);

示例:

void f1()
    {
      printf("in function f1");
    }
int main()
{
  /* declaring a function pointer
   * argument void 
   * return type is also void
   */

  void (*fun_ptr) (void);  
  fun_pt= f1();  // fun_pthold the address of f1
  (*fun_pt)();    // calling a function f1 
}