十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
如果函数的定义是在调用之前,就不用声明。如果先调用后定义,就要在调用之前先声明。比如上面的例子,如果把函数max的定义部分放在main后面,那就要在调用之前声明。
网站制作、网站设计的关注点不是能为您做些什么网站,而是怎么做网站,有没有做好网站,给成都创新互联一个展示的机会来证明自己,这并不会花费您太多时间,或许会给您带来新的灵感和惊喜。面向用户友好,注重用户体验,一切以用户为中心。
在C语言中,函数声明只是推荐,而不是强制。
当没有函数声明的时候,编译器没办法对函数的参数个数和类型做检查,于是带来风险,但并不是找不到。
你看下你编译的时候,针对没有声明的函数,应该会有一个warning的。代表编译器检查到了这个问题,但是并不是致命的。所以只是warning, 而不是error。
有两处错误:
#include stdio.h
#include stdlib.h
long int max (int a,int b,int c)
{
int d;
if(ab)d=a;
else d=b;//第一处,两句话顺序交换,并且应是d与c比较
if(dc)d=c;
return d;
}
void main ()
{
int a,b,c,d;//第二处,没有定义变量
printf("请输入3个数字");
scanf("%d,%d,%d",a,b,c);
d=max(a,b,c);
printf(" %d \n",d);
system("PAUSE");
return 0;
}
很明显是函数声明嘛,书上这样写就是错了。
楼主有不懂可以问哦。
第一,如果你没有看错就是你的书错了,只有int和char类型的函数不必声明
第二,C中可以不声明函数的条件是3个
1就是上面我说的
2.是被调函数定义在主调函数之前,可不必声明
3函数的外部已声明过了,个个主调函数中不必声明
对于第二点,很好解释,因为声明的目的在于告诉编译器有这么个自定义函数,返回类型是什么,如果被调函数定义在主调函数之前,那么编译器自然就知道了这个函数
你把f2和f1换下位置并去掉声明就明白了
再说一句,写函数声明是编写程序的良好习惯
请注意这是C程序,C官方声明标准编译器是Turboc 2。0
不要把C++的概念强加给C
我不是说VC++6不好,而是说既然是在学C,就要用标准的C编译器,只有标准C编译器才能正确的学习C的基础理论
这里涉及到一个路径的问题。我们编写好的程序main函数是入口,当编译器变异的时候会根据里面调用到的其他函数去寻找加载进来一起编译(非main函数如果不被main函数调用其实根本上就没用,这里指的是不被main函数调用和main函数调用过的函数调用),假如是include进来的编译器就知道去库函数里面加载那一个函数,而没有include进来的就会在本目录下检索,假如检索不到就编译出错。库函数所在就相当于老地方,而main函数所在的地方就相当于本地,这两个都是被编译器熟知的。
其实除了c语言,java也会这样,不在同一个包内的类需要导入,在同一个包里面的类不需要导入(import),在同一个java文件里面的类(内部类或者类外面定义的类都一样)也不需要导入。因为编译器知道在这两个地方找,去类库找就需要指定哪一个。