我的下面的代码工作正常。但我有一点疑问,请参阅//Comment1
和//Comment2
如何在函数指针中使用函数的地址?
#include<stdio.h>
#include<string.h>
struct PTR
{
int (*funptr)(int);
};
int fun1(int)
{
printf("Fun1\n");
return 0;
}
int fun2(int)
{
printf("Fun2\n");
return 0;
}
int main()
{
PTR p;
p.funptr = &fun1; //Comment1
p.funptr(5);
printf("\n");
p.funptr = fun2; //Comment2
p.funptr(5);
return 0;
}
输出:FUN1 FUN2
这是没有问题的输出。
在评论1'&'使用opertor,所以我们正在expillicing告诉得到地址,在comment2中,我们没有使用'&',所以哪一个是正确的方式?
你怎么能在声明主要功能PTR p,而无需使用结构名称或的typedef? –
@RaghuSrikanthReddy PTR是结构的名称。 (struct PTR) –
但是,这段代码编译了吗?在PTR之前,您既没有使用过结构体也没有使用结构体 –