假如有一函数f, 没有参数, 则要这样调用:
f();
其中, f是函数f的函数名, 但对于编译器来讲, f是一个地址, 它指向了f函数代码段的开头部分.而()是一个运算符, 它非常类似于*, 但是*是取值的, 而()是让程序跳转到f处执行程序. 最后的那个分号就是标识着一个语句的结束
如果f有一个整型的参数, 那么需要这样调用:
f(1);
只是多了一个1, 这个1就是()运算符要复制到f函数的栈中了, 准确地说是复制到它的形参中.
如果f有多个参数, 则只需要在每个形参之间打上逗号:
f(1, 2, 3);
逗号只是用来起分隔作用.
)
原因:主函数中chose为char型,若menu返回的为int型无法自动转换为char型
2)建议将menu函数放在main主函数前,或在main主函数前进行声明char menu(void);
3)建议将scanf("%c", &choice);改为choice=getchar();这样就需要将变量choice声明为int型,仍使用原来的int menu()函数,同时将main主函数中的变量chose声明为int型
4)建议若使用C编译器(如TC2.0),请将变量声明与函数起始处
修改后的程序
int menu()
{
int choice;
printf("A<-Manage Search->B\n");
printf("C<-Sort flight informations\n");
printf("D.bookTicketE.returnticket F.staticticket\n");
printf("G.Exit the Aircraft Booking System!\n");
printf(" -----What do you want to do :");
choice = getchar();
return choice;
}
int main()
{
int chose;
while(1)
{
chose=menu();
switch(chose)
{
case 'A':
manageflight();
break;
case 'B':
flightsearch();
break;
case 'C':
sortinformation();
break;
case 'D':
flightbook();
break;
case 'E':
flightdishonnor();
break;
case 'F':
flightstatic();
break;
case 'G':
return 0;
default:
printf("\n--input error !--\n");
}
}
return 0;
}
就这样调用啊,这叫嵌套调用
如:
int max(){}
void sort(){}
int main()
{
int m;
.......
sort{ m=max();........ }
.........
}
不太明白你什么意思,调用函数通过函数名调用,或都可以通过函数指针调用
int fun1()
{
};
int (*pfun)();
main()
{
fun1();//直接调用
p=fun1;
(*p)();//调过指针调用
}
是属于函数的嵌套吗?如果是,就直接在写外函数b时按照在主函数里调用外函数的形式调用a就行了啊。