函数指针处于非活动状态,结构位于C中



我有以下代码:

#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("%dn", allPages);
    return (EXIT_SUCCESS);
}

我试图在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("%dn", allPages);
     return (EXIT_SUCCESS);
  }

有关更多信息,您可以参考

结构内部的C函数

最新更新