c - C 中的函数指针与结构不活动

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

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

最佳答案

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

关于c - C 中的函数指针与结构不活动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34228747/

相关文章:

c - 在与原子加载和存储同步的线程之间共享变量是否安全?

c++ - 在 C++ 中从字符串创建类以避免大的 switch 语句?

c++ - 为什么通常的访问控制检查适用于通过模板参数访问时用于指定显式实例化的名称?

gcc - 一起编译 binutils 和 gcc 的方法?

c - 我正在尝试这个多线程代码来理解。谁能帮我理解 "print message"部分。我在此发布代码

c - 错误 :declaration terminated incorrectly

c++ - cvGet2D 替代方案

android - 使用最新的GCC5或GCC6编译Android ROM和Kernel

c++ - strtok 工作不正常

c - 如何解释C代码: char *s = "hello " "world";