今天刚学函数的调用,对于主函数给被调函数一个值不是很明白,所以看不出这个到底错在那了,请帮我讲解下,谢谢
#include<stdio.h>
void jisuan();
void main()
{
float r;
printf("please input a number:");
scanf("%f",&r);
jisuan(r);
}
void jisuan(float num)
{
float zhouchang,mianji;
zhouchang=2*3.14*num;
mianji=3.14*num*num;
printf("周长:%f\n",zhouchang);
printf("mianji:%f\n",mianji);
}
參考答案:此处错误不是重复定义函数,是函数声明(declare)未指明形参的数据类型.
void jisuan(); /*这一行出错*/
改成 "void jisuan(float);"即可.
注意:"void jisuan(float);"中,
float后面可以随便接一个变量名字,变量的名字也可以省略不写,但记得写语句结尾的分号,此处不是函数定义,是声明.
此处的作用是通知编译器"下面要用到一个名字为jisuan的函数,它需要一个float型的参数",
编译器获得了它需要的信息之后,可能压根不会理会float后面接的变量名字是什么(因为在此处变量名对编译器并不重要.)
总结下:
正确的函数声明如下例:
int sum(int, int);
int sum(int x, int y);
两种声明方式都是正确的,例子中出现的x和y可以省略不写.注意函数的声明是一个语句,需要分号来终结.
函数的定义如下例:
int sum(int x, int y)
{
return x + y;
}
函数的定义以与第一个"{"相对应的"}"为终结符.
若函数在被调用之前被定义,则不必使用"声明".(见xjflyttp的写法.)