本帖最后由 DRAGON-Yeah 于 2013-12-17 20:27 编辑
第5章:函数 生活中,在我们解决一个比较大的问题的时候,通常把大问题分解成小问题,然后把各个小问题全部解决完毕,在理清整个问题的来龙去脉,最后就把整个大问题解决了。在小学和中学的时候,我们写作文也一样,为什么要分段呢?因为段是一个独立的事件,分段了对文章的阅读性比较好,而且提高整篇文章可阅读性。 函数简单来说是一个完成独立功能的程序段,为了让这个程序段整体、有序、格式易读,我们往往会把这个独立功能的程序段独立开来,然后需要调用的时候就在相对应的地方进行调用。 让我们看第一个函数:main()->主函数。 #include//包含标准输入输出流 void main() { printf(“hello world”); } main()是主函数(也是函数),是整个应用程序执行的入口,任何应用程序都必须在主函数里面才能被执行,否则没有被执行。如图1,main函数就好像一个统帅,统领这个每一个函数或程序 图1 函数分为两种类型,一种是无返回值类型,一种是带返回值类型。 无返回值类型: void 函数名(参数1,参数2,….) { 程序… } 解释:无返回值类型的函数就是void带头,参数可无可有,具体看程序功能的需求。 例程: #include static const double Pi = 3.14;//因为Pi是常用而不变的量,于是我们用const来定义为一个常量 /************************************** 1、函数在主函数里被调用,就必须 先在主函数之前已经存在,于是 函数必须在主函数之前声明。 2、函数1被函数2调用,则函数1必须 在函数2之前已经存在,所以,函数1 必须声明在函数2之前 ***************************************/ void Sum(int a,int b ,int c);//带参数无返回值 void func();//无参数,无返回值 void Circle(double *radius);//无返回值、指针 void main() { doubleArea = 0;//圆的面积 doubleRadius =0; //圆的半径 Circle(&Radius); Area= Pi *Radius * Radius; printf("Area=%lf n", Area); Sum(2,6,4);//调用求和 func();//求1~100的和 } /*********************************************************************************/ /*函数名:Circle() /*参数: /* radius--------double* /* /*返回值:void /*功能:计算出圆的面积 /*作者:DRAGON **********************************************************************************/ void Circle(double* radius) { *radius= 5; //使用指针,改变原来的半径值 } /*********************************************************************************/ /*函数名:Sum() /*参数:a ----- int /* b ----- int /* c ----- int /*返回值:void /*功能:求和运算 /*作者:DRAGON ******************************************************************************/ void Sum(int a,int b ,int c) { intsum = 0; sum= a + b - c; printf("sum=%d n",sum); } /*****************************************************************************/ /*函数名:func() /*参数:无 /* /* /*返回值:void /*功能:计算出 1 ~100的和 /*作者:DRAGON ******************************************************************************/ void func() { intsum = 0; inti = 0; for(i = 1 ;i<=100; i++) { sum= sum + i; } printf("sum= %d n",sum); }
带返回值类型: *类型函数名(参数1,参数2,….) { 程序… return *类型; } 解释:如果函数名前带了*类型的函数就是带有返回值得函数,在函数的最后必须加上return *类型的变量或值。 例子: #include /************************************** 1、函数在主函数里被调用,就必须 先在主函数之前已经存在,于是 函数必须在主函数之前声明。 2、函数1被函数2调用,则函数2必须 在函数1之前已经存在,所以,函数2 必须声明在函数1之前 ***************************************/ int Sum(int a,int b ,int c);//带参数无返回值 char func();//无参数,无返回值 void main() { charcc; intsum = 0; sum=Sum(2,6,4);//调用求和 printf("sum= %d n",sum); cc= func();//求1~100的和 printf("查询出来字符cc = %cn",cc); } /*********************************************************************************/ /*函数名:Sum() /*参数:a ----- int /* b ----- int /* c ----- int /*返回值:sum -----int /*功能:求和运算 /*作者:DRAGON **********************************************************************************/ int Sum(int a,int b ,int c) { intsum = 0; sum= a + b - c; returnsum; } /*********************************************************************************/ /*函数名:func() /*参数:无 /* /* /*返回值:cc -------char /*功能:查询出字符串数组中的q,并返回 /*作者:DRAGON **********************************************************************************/ char func() { charch[10]={'b','a','c','4','f','q','t','z','r','m'}; inti = 0; charcc ; for(i = 0 ;i<=10; i++) { if(ch == 'q') { cc= ch; break; } } returncc; } 函数、变量修饰符 常量:const const int a = 10; 这样,a永远都是10,不能够再被改变,一般不改变的值,在写程序的时候都定义为常量。 静态:static 一般全局的函数或者是变量不声明即为静态的。 例程中Pi是一个静态的常量。 函数没有修饰符,没有特殊声明,属于静态的函数。 如: void main() { … } 相当于: static void main() { … } 全局与局部变量: 全局变量是定义在函数之外,作用于全局。例程中Pi就是一个全局的静态常量。 局部变量则是定义在一个函数内部的,只作用与定义的那个函数里面。 参数: 图2 函数就介绍到这里,下一章介绍C语言字符串操作 |