Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
函数指针在C中与结构一起处于非活动状态_C_Gcc - Fatal编程技术网

函数指针在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
的有效签名。啊哈。谢谢大家。我的错。我忘了。