函数问题求助
出现的问题是,写了一个void函数,想在main函数中执行,却行不通,直接跳过了这个函数。代码如下:void menu()
{
printf("菜单:\n");
printf("1.建立链表\n");
printf("2.显示链表\n");
printf("3.查找信息\n");
printf("4.删除信息\n");
printf("5.增加信息\n");
printf("6.退出系统\n");
printf("请选择要执行的操作:");
scanf("%d",&choose); //choose是全局变量
while(choose<1||choose>6)
{
printf("输入错误,请重新输入:");
scanf("%d",&choose);
}
switch(choose)
{
case 1: ;break;
case 2: ;break;
case 3: ;break;
case 4: ;break;
case 5: ;break;
case 6: ;exit(0);
}
}
int main()
{
menu; //问题主要在这儿
return 0;
}
求教为什么不行呢~ menu; //问题主要在这儿
menu(); 应该这样吧,不加()编译器可能不知道这是个函数 lzgw 发表于 2016-12-27 08:36
menu; //问题主要在这儿
menu(); 应该这样吧,不加()编译器可能不知道这是个函数
问题解决了~谢谢啦,不过为什么呢?我之前引用void型的函数不加()也可以成功,难道是头文件里有menu函数吗? lzgw 发表于 2016-12-27 08:36
menu; //问题主要在这儿
menu(); 应该这样吧,不加()编译器可能不知道这是个函数
回去检查了下以前编的程序,发现没用过void fun(void)型的~{:10_282:} hannikodo 发表于 2016-12-27 09:02
问题解决了~谢谢啦,不过为什么呢?我之前引用void型的函数不加()也可以成功,难道是头文件里有menu函 ...
这些都是语法问题,也就是说我们编写代码要遵循一定的规则,这样编译器才能识别。好比你现在什么都不会,然后我告诉你1+1=2。问6*8=?。这时候你肯定无法计算出结果。因为你不会,没人告诉你这个答案。但是如果我告诉你6*8=48。哪我再问你的时候,你自然就知道答案了。
语法就是人们将一定的规则编写到编译器中,然后编译器按照这个规则进行代码解析。int a;这样的编译器就知道这是在申明一个变量。void menu();这样的编译器就知道你想申明一个函数。
所以,语法是没有为什么的,就是强制规定,你这样做了,编译器才能认出来。你说你之前有成功过,最好能把代码发出来,这样才能清晰的看到问题。
编译器也是人写的,所以存在漏洞也是必然的。而且,语法这个东西,谁也不能保证把每个细节都掌握的很透彻。说不定menu;这样调用函数他就可以呢?
所以,不用太在意这些细节,在真正的编程过程中你只需要掌握一套正确的编译器可识别的语法规则就可以了。学语法的目的就是让机器能够认识自己的代码,这就是语法的核心。PHP有PHP的语法,C++有C++的语法,java有java的语法。每种语言都会有自己一套识别代码的规则。像易语言,你写汉字他还能认识呢。。。{:10_312:} musilintan 发表于 2016-12-27 09:26
这些都是语法问题,也就是说我们编写代码要遵循一定的规则,这样编译器才能识别。好比你现在什么都不会, ...
嗯嗯,是我想的太理所当然了,谢谢层主的回答,受教了~
页:
[1]