第5章函数
生活中,在我们解决一个比较大的问题的时候,通常把大问题分解成小问题,然后把各个小问题全部解决完毕,在理清整个问题的来龙去脉,最后就把整个大问题解决了。在小学和中学的时候,我们写作文也一样,为什么要分段呢?因为段是一个独立的事件,分段了对文章的阅读性比较好,而且提高整篇文章可阅读性。
函数简单来说是一个完成独立功能的程序段,为了让这个程序段整体、有序、格式易读,我们往往会把这个独立功能的程序段独立开来,然后需要调用的时候就在相对应的地方进行调用。
让我们看第一个函数:main()->主函数。
#include<stdio.h>//包含标准输入输出流
void main()
{
printf(“hello world”);
}
main()是主函数(也是函数),是整个应用程序执行的入口,任何应用程序都必须在主函数里面才能被执行,否则没有被执行。如图1,main函数就好像一个统帅,统领这个每一个函数或程序
图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就是一个全局的静态常量。
局部变量则是定义在一个函数内部的,只作用与定义的那个函数里面。
参数:
图2
函数就介绍到这里,下一章介绍C语言字符串操作,记得下载例程哦!!!
转载于:https://blog.51cto.com/dragonyeah/1283782