【问题标题】:Segmentation fault while using array of function pointers in C [closed]在C中使用函数指针数组时出现分段错误[关闭]
【发布时间】:2012-02-28 22:14:57
【问题描述】:

我有这个代码:

int main()
{
    unsigned char c;
    enum state_t {
        state1,
        state2,
        state3
    } states;
    enum state_t (*action[3])(char c);

    state=state1;
    initialize_state(action);
}

void initialize_state (enum state_t  (*action[])(char c))
{
    action[state1]=func1;
    action[state2]=func2;
    action[state3]=func3;
}

initialize_state(action); 出现分段错误。

【问题讨论】:

  • 我不认为state_t 可以是本地类型,如果你想让一个函数返回它。尝试使其全球化。
  • 事实上,就目前而言,这甚至无法编译。请发布一段正确的、经过良好测试的代码,准确地代表您的问题。
  • state 是一个错字,我猜应该是states

标签: c segmentation-fault


【解决方案1】:

由于段错误意味着对内存的非法引用,请检查以确保您没有传递无效的函数指针地址。

您是否通过调试器运行代码以找出段错误的确切位置?如果没有,我建议你这样做。您的代码片段没有按原样编译。

http://www.newty.de/fpt/fpt.html#arrays

【讨论】:

    【解决方案2】:

    除了您的代码一团糟之外,例如没有原型声明并且在 main 下面声明了函数,或者在 int main(void) 中没有返回类型,在 main() 中缺少 void ...等等,我猜你可能已经声明了 func1、func2 的返回类型, func3 也是错误的。例如void func1(void){}

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-27
      • 2021-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多