首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C语言 程序编译有关问题(函数,结构,参数传递)

2012-09-23 
C语言程序编译问题(函数,结构,参数传递)有这样一段代码..ch为char类型,showmenu,showlist,assign,deleteem

C语言 程序编译问题(函数,结构,参数传递)
有这样一段代码..ch为char类型,showmenu,showlist,assign,deleteem均为函数,airpln为结构,本例中将结构作为参数传递,在编译的时候有错误:
[Error] D:\My Documents\C-Free\Projects\14.8.c:65: error: incompatible type for argument 1 of `shownumemp'
[Error] D:\My Documents\C-Free\Projects\14.8.c:67: error: case label not within a switch statement
[Error] D:\My Documents\C-Free\Projects\14.8.c:68: error: incompatible type for argument 1 of `showlist'
[Error] D:\My Documents\C-Free\Projects\14.8.c:70: error: case label not within a switch statement
[Error] D:\My Documents\C-Free\Projects\14.8.c:71: error: incompatible type for argument 1 of `assign'
[Error] D:\My Documents\C-Free\Projects\14.8.c:71: error: incompatible type for argument 2 of `assign'
[Error] D:\My Documents\C-Free\Projects\14.8.c:73: error: case label not within a switch statement

 while((ch=getchar())!='e')
  {
  switch(ch)
  case 'a':
  shownumemp(airpln);
  break;
  case 'b':
  showlist(airpln);
  break;
  case 'c':
  assign(airpln,fp);
  break;
  case 'd':
  deleteem(airpln);
  break;
  default :
  printf("illicit input\n");

下面为各函数声明:
  void showmenu(void);
  void shownumemp(struct flight);
  void showlist(struct flight);
  void assign(struct flight,FILE);
  void deleteem(struct flight);

请问为什么会有这样的错误啊....我看了半天也不知道怎么回事

PS:请问结构数组可以作为函数的参数传递吗??

感谢各位。。。好人一生平安

[解决办法]
结构体变量,结构体指针都可以作为函数的参数
[解决办法]
1) switch(x)
{
case xx:
xxx;
break;

default:
break;
}

2)当把结构体作为函数参数时,应该传递结构体实例的指针。当然也可以传整个结构体,不建议这样做,因为效率很低。
[解决办法]

探讨

1) switch(x)
{
case xx:
xxx;
break;

default:
break;
}

2)当把结构体作为函数参数时,应该传递结构体实例的指针。当然也可以传整个结构体,不建议这样做,因为效率很低。

热点排行