第5章函数

生活中,在我们解决一个比较大的问题的时候,通常把大问题分解成小问题,然后把各个小问题全部解决完毕,在理清整个问题的来龙去脉,最后就把整个大问题解决了。在小学和中学的时候,我们写作文也一样,为什么要分段呢?因为段是一个独立的事件,分段了对文章的阅读性比较好,而且提高整篇文章可阅读性。

函数简单来说是一个完成独立功能的程序段,为了让这个程序段整体、有序、格式易读,我们往往会把这个独立功能的程序段独立开来,然后需要调用的时候就在相对应的地方进行调用。

让我们看第一个函数:main()->主函数。

#include<stdio.h>//包含标准输入输出流

void main()

{

        printf(“hello world”);

}


main()是主函数(也是函数),是整个应用程序执行的入口,任何应用程序都必须在主函数里面才能被执行,否则没有被执行。如图1main函数就好像一个统帅,统领这个每一个函数或程序


190757899.png

1


函数分为两种类型,一种是无返回值类型,一种是带返回值类型。

无返回值类型:

void 函数名(参数1,参数2….

{

程序

}


解释:无返回值类型的函数就是void带头,参数可无可有,具体看程序功能的需求。


例程:

#include <stdio.h>


static const double Pi = 3.14;//因为Pi是常用而不变的量,于是我们用const来定义为一个常量


/**************************************

        1、函数在主函数里被调用,就必须

先在主函数之前已经存在,于是

函数必须在主函数之前声明。

        2、函数1被函数2调用,则函数2必须

在函数1之前已经存在,所以,函数2

必须声明在函数1之前

***************************************/

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 <stdio.h>


/**************************************

        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 = %c\n",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[i] == 'q')

                  {

                           cc= ch[i];

                           break;

                  }

        }

        returncc;

}



函数、变量修饰符

常量:const

const int a = 10;

这样,a永远都是10,不能够再被改变,一般不改变的值,在写程序的时候都定义为常量。

静态:static

一般全局的函数或者是变量不声明即为静态的。

例程中Pi是一个静态的常量。

函数没有修饰符,没有特殊声明,属于静态的函数。

如:

void main()

{

        …

}

相当于:

static void main()

{

        …

}


全局与局部变量:

全局变量是定义在函数之外,作用于全局。例程中Pi就是一个全局的静态常量。

局部变量则是定义在一个函数内部的,只作用与定义的那个函数里面。

参数:

190916340.png

图2


函数就介绍到这里,下一章介绍C语言字符串操作,记得下载例程哦!!!