函数指针在C中与struct无关

时间:2015-12-11 17:01:38

标签: 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 + *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);
}

我试图在struct中使用函数,但我的程序没有结果,没有警告,虽然我使用-Wall,-Wextra。我是新手。希望大家都能帮忙。

2 个答案:

答案 0 :(得分:2)

var.p未初始化(意味着它几乎肯定不会引用有效函数),从而创建未定义的行为。在函数调用之前使用var.p = sum;对其进行初始化。

答案 1 :(得分:0)

在代码中,首先应该为指针分配一个函数,然后使用指针调用函数。为此你的代码应该是

 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);
  }

有关详细信息,请参阅

C - function inside struct