这c程序编得哪里错了

来源:百度知道 编辑:UC知道 时间:2024/06/14 04:35:55
#include <stdio.h>
int menu(int);
void process(void (*fp)());
void enter();
void del();
void review();
void quit();
int main (void)
{
int n=0;
void (*fp[4])();
fp[1]=enter;
fp[2]=del;
fp[3]=review;
fp[4]=quit;
n=menu(n);
printf("%d",n);
process(fp[n-1]);
return(0);
}

int menu(int n)
{
printf("请选择您要实现的功能:\n1.Enter;2.Del;3.Reiew;4.Quit\n");
scanf("%d",n);
return(n);
}

void enter()
{
printf("is enter()\n");
}

void del()
{
printf("is del()\n");
}

void review()
{
printf("is review()\n");
}

void quit()
{
printf("is quit()\n");
}

void process(void (*fp)())
{
fp();
}

编译能通过(vc6.0),但运行时会崩溃掉,不知道为什么,哪位大侠指点一下

fp[1]=enter;
fp[2]=del;
fp[3]=review;
fp[4]=quit;
数组越界了0-3
////////////////////////
int menu(int n)
{
printf("请选择您要实现的功能:\n1.Enter;2.Del;3.Reiew;4.Quit\n");
scanf("%d",n);
return(n);
}
改成
void menu(int * n)
{
printf("请选择您要实现的功能:\n1.Enter;2.Del;3.Reiew;4.Quit\n");
scanf("%d",n);
}
调用时用menu(&n);