C语言中使用函数指针数组时的分段错误
我有以下代码:C语言中使用函数指针数组时的分段错误,c,segmentation-fault,C,Segmentation Fault,我有以下代码: 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
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_状态(action)时出现分段错误代码>由于segfault意味着对内存的非法引用,请检查以确保未传递无效的函数指针地址
您是否已通过调试器运行代码以准确找出故障所在?如果没有,我建议你这样做。您的代码片段未按原样编译
除了您的代码乱七八糟之外,例如没有原型声明并且在main下面声明了函数,或者在int main(void)中没有返回类型,main()中缺少void等等,我猜您可能也错误地声明了func1、func2、func3的返回类型。e、 g.void func1(void){}
我不认为如果你想让函数返回它,state\u t
可以是一个本地类型。试着让它全球化。事实上,就目前的情况来看,它甚至都不会编译。请发布一段正确的、经过良好测试的代码,准确地表示您的问题。state
是一个拼写错误,我想应该是states