函数的入口在main(),程序从上至下执行的,如果你的函数在main()之后定义并且没有声明,执行的时候编译器会找不到定义而编译不过。声明就是要让编译器知道函数原型 (检测错误)
成都创新互联主要从事成都网站制作、网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务徽州,十余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792
总之,如果main()函数在前,必须在main()中写函数声明;如果函数在main()前面,可以不在main()中写函数声明
C语言所有函数都是由函数说明和主函数main()组成。
函数声明为编译器提供了有用的信息,编译器在翻译代码的过程中,只有见到函数原型(这里即可以是声明也可以是定义)之后才知道这个函数的名字、参数类型和返回值,这样碰到函数调用时才知道怎么生成相应的指令。
所以函数原型必须出现在函数调用之前,这也是遵循“先声明后使用”的原则。注意上面说的函数原型是包括函数声明和定义两种形式的。另外还有一种特殊情况,就是隐式声明。隐式声明的函数返回值类型都是int。
C语言:
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
以上内容参考:百度百科--C语音
在C语言中,编译一个C语言源文件是从第一行开始扫描到最后的,你调用一个函数,之前必须定义或申明过这个函数。
这样是合法的:
void f(){
}
int main(){
f();
}
这样也是合法的
void f();
int main(){
f();
}
void f(){
}
这样就是非法的
int main(){
f();
}
void f(){
}
所以函数调用不一定需要先声明,当函数定义调用函数之后需才要先申明。
#
include
"math.h"
#
include
stdio.h
void
get_equa(float
a,float
b,
float
c)
//注释:声明空类型float函数get_equa()
{
if(a==0.0)
//注释:系数a的值为0的情况.
if(b==0.0)
//注释:a值为0的情况下b也为0.
printf("data
error,
no
answer
to
show!");
//注释:非一元二次方程式,打印“data
error...”
else
printf("the
equation
only
have
one
root:
%f",-c/b);
//注释:打印唯一解.
else
{
double
disc,term1,term2,root_1,root_2,two_a;
//注释:声明必要double型变量.
//注释:一元二次方程式的根有两个,表达式这里不好写,但数学上是这样读的:x
等于
2a
分之
负b
加减
根号下
b平方
减
4ac.(就是那个表达式的读法.)
disc=b*b-4*a*c;
two_a=2*a;
term1=-b/two_a;
term2=sqrt(fabs(disc))/two_a;
//注释:根号下b平方减4ac除以2a的值.
root_1=term1-term2;
root_2=term1+term2;
if(disc0)
printf("the
equation
only
have
the
complex
root:\n
real
part
=%f,
imag
part
=%f",term1,term2);
//注释:打印虚部和实部的值.
else
printf("the
equation
have
two
roots:\n
one
is
%f\n
another
one
is
%f",root_1,root_2);
//注释:打印它的两个实数根.
}
}
void
main()
{
float
a,b,c;
printf("please
input
your
equation's
a,b,c:\n");
scanf("%f%f%f",a,b,c);
get_equa(a,b,c);
}
代码测试通过。。有什么不懂的可以问我。。嘿嘿。