什么是普通英语的功能指针?
答案 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/I,COBOL, Fortran,1 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
}