函数指针在C中与结构一起处于非活动状态
我有以下代码:函数指针在C中与结构一起处于非活动状态,c,gcc,C,Gcc,我有以下代码: #include <stdio.h> #include <stdlib.h> struct Book { char title[50]; char author[50]; char subject[100]; int numPages; int numBooks; int (*p) (int *, int *); }; int sum (int *a, int *b) { return *a +
#include <stdio.h>
#include <stdlib.h>
struct Book {
char title[50];
char author[50];
char subject[100];
int numPages;
int numBooks;
int (*p) (int *, int *);
};
int sum (int *a, int *b) {
return *a + *b;
}
int main() {
struct Book var;
var.numPages = 7;
var.numBooks = 9;
int allPages = (*var.p) (&var.numPages, &var.numBooks);
printf("%d\n", allPages);
return (EXIT_SUCCESS);
}
#包括
#包括
结构书{
字符标题[50];
char作者[50];
字符主题[100];
国际货币单位;
内特木屋;
整数(*p)(整数*,整数*);
};
整数和(整数*a,整数*b){
返回*a+*b;
}
int main(){
结构书变量;
变量numPages=7;
numBooks变量=9;
int allPages=(*var.p)(&var.numPages,&var.numBooks);
printf(“%d\n”,所有页面);
返回(退出成功);
}
我试图在struct中使用函数,但我的程序没有结果,尽管我使用了-Wall,-Wextra,也没有警告。我是个新手。希望大家帮助。var.p未初始化(这意味着它几乎肯定没有引用有效的函数),从而创建了未定义的行为。使用
var.p=sum
在函数调用之前对其进行初始化。在代码中,应首先将函数分配给指针,然后使用指针调用函数。为此,您的代码应该是
int main()
{
struct Book var;
var.numPages = 7;
var.numBooks = 9;
var.p=sum;
int allPages =var.p(&var.numPages, &var.numBooks);
printf("%d\n", allPages);
return (EXIT_SUCCESS);
}
有关更多信息,请参考
您没有将
p
设置为有效的函数!您需要var.p=sum
。我很惊讶你没有被侵犯访问权限。该行为未定义。它编译时没有警告,这是一个运行时错误,因此无法捕获类似的内容。int main()
不是main
的有效签名。啊哈。谢谢大家。我的错。我忘了。