先举个例子:
#include
int max(int,int); //这是函数max的申明,最后要加分号
int main()
{
int a=1,b=2,c;
c = max(a,b); //这是函数max的使用
printf("%d",c);
return 0;
}
int max(int n,int m) //这是函数max的定义部分,最后不加分号
{
if (n>m)
return n;
else
return m;
}
不能在函数体内定义函数是什么意思?
【就是说函数在程序中不能嵌套定义,这个和Pascal语言不同,例如上面程序中,max函数不能定义在main函数中间】
定义是声明还是使用?
【定义既不是申明,也不是使用,函数具体功能的实现代码叫做函数的定义,如上面程序最后7行就是定义】
函数不是应该先声明在使用吗?
【是的,但如果函数定义在函数使用之前,就可以不用申明(如下面程序)。函数定义在函数使用后的情况下(如上面程序),先声明,能使编译器在编译在编译过程中能够识别使用的函数】
#include
int max(int n,int m) //这是函数max的定义部分,最后不加分号
{
if (n>m)
return n;
else
return m;
}
int main()
{
int a=1,b=2,c;
c = max(a,b); //这是函数max的使用
printf("%d",c);
return 0;
}
定义如何解释?
【见第二个问题】
1、定义,声明,使用:
定义就是给出函数的实体,就是用代码写出函数功能包括函数名函数参数和函数体;
如:int max(int a,int b)
{
return a>b?a:b;
}
声明,就是说明,说明一下这个函数的样子,即给出函数名和函数参数,声明是给编译器看 的,以便于编译器检查函数调用是否正确。如:int max(int a,int b);也可以int max(int,int)
使用就是调用,是在代码中实实在在的发挥该函数的功能,如:m=max(2,3);
2在函数内部不能定义其他函数就是说,在定义一个函数的时候,不能在函数内在定义另一个函数,即函数的的定义不能嵌套。
不能在函数体内定义函数是什么意思?
函数的操作方法与内容,不在写在另一个函数体内,因为那样做,会使它的作用域在一个函数体内,在别的地方没有办法引用,编译器找不到。理由可能不对,但是这样规定的。
定义是声明还是使用?
定义是指明操作内容,即不是声明也不是使用,而是指它的工作内容,使用是指调用,声明是编译器知道这么个破东西。
函数不是应该先声明在使用吗?
对。
定义如何解释?
上面已经说过了。
#include
static int n;
void input(double a[])
{
int i = 0;
char ch;
while(scanf("%lf",&a[i])!=EOF)
{
n++;
getchar(ch);
if(ch == '\n')
break;
}//因为输入没要个数,所以处理起来麻烦
}
double average(double a[],int n)
{
int i;
double total = 0;
for(i=0;i<=n;i++)
total += a[i]; //把所有的数相加
return total/n; //返回总和除以个数,就是平均数
}
int count(double a[],double average,int n)
{
int i,count=0;//定义一个记录高于平均数的变量count
for(i=0;i<=n;i++)
if(average<=a[i])
count++;//做一次遍历就能球出count
return count;
}
void main()
{
double a[100],aver; //数组可以根据需要改大一点
int cou;
printf("enter array :");
input(a[]);
aver = average(a[],n);
printf("平均数:%lf\n",aver);
cou = count(a[],aver,n);
printf("高于平均数的个数:%d\n",cou);
}
//在网吧无聊,就打打C的代码,没有编译器所以不知道有没有语法错误,但是算法是没问题的
//要是编译有错,你自己可以试着改改,对你也有帮助
是先定义后使用,定义就是说先确定类型,是常量还是变量等,定下来后再使用