//编程中第一次遇到这样的有关问题,关于函数参数和输入

//编程中第一次遇到这样的问题,关于函数参数和输入
当调用函数
void menu(int* n)
{
  printf("菜单:");
  printf("1.hua");
  printf("2.niao");
  printf("3.tuichu");

  printf("请输入您选择的序号:");
  scanf("%d",n);
}

  用gcc编译能通过,但是运行出错为段错误,用gdb调试在第9行(也就是scanf行)报错,提示为:
Program terminated with signal SIGSEGV,Segmentation fault.
0x00a1ab2f in_IO_vfscang_internal () from /lib/libc.so.6
再往下运行,则系统显示:
Program terminated with signal SIGSEGV,Segmentation fault.
The program no longer exists.

  这是为什么?怎么办?

------解决方案--------------------
main里面将指针赋值为0

menu里面用scanf,等于往0这个地址写入数据,肯定段错误啊。

可以这样改一下
void main()
{
int i;
menu(&i);
}
------解决方案--------------------
探讨
int* n = new int; 这句话是什么意思?