目录
为什么要用到函数
函数的三要素
函数的封装和调用
形式参数和实际参数
局部变量:在每个函数中的所定义的变量就是局部变量,指在所在函数起作用。
三步运算符:例: temp = x>y? x:y;
函数的嵌套
函数的递归
数组与函数
二维数组与函数
合法写法:int a[3][4]
全局变量
函数小练习
函数与冒泡排序法
函数与简单排序法
补充
-
为什么要用到函数
避免代码冗长
模块化的设计思路
按功能划分,每个函数代表一个功能,而函数的名字要体现函数的功能含义,类似变量标识符 y = f(x)
-
函数的三要素
函数的要先定义再使用。
定义(三要素):函数名、参数列表、返回值。
-
函数的封装和调用
无参函数和有参函数
Void函数不需要return
//定义无参函数
void Wellcome()
{
puts("=====================");
puts("HeLL World!");
puts("=====================");
}
//形式参数,需要包含变量类型,变量名
int getDataFromX(int x)
{
int y;
y = 2*x;
return y;
}
int add (int x,int z)
{
int y;
y = x+z;
return y;
}
void setA()//空函数
{
}
int main ()
{
int x,y,z;
setA();
Wellcome();
puts("请输入一个整数:");
scanf("%d",&x);
y = getDataFromX(x); //函数调用
printf ("x=%d y=%dn",x,y);
puts("请输入一个整数:");
scanf("%d",&x);
puts("请再输入一个整数:");
scanf("%d",&z);
y = add(x,z);
printf ("%d+%d=%dn",x,z,y);
return 0;
}
-
形式参数和实际参数
也就是形参和实参
形参是指定义函数时用到的变量,实参是指在调用函数时所使用的变量或常量;
生命周期,指形参被调用到调用结束时的周期
传递参数,传递的是值。形参和实参值相同,地址空间不同。
-
局部变量:
-
在每个函数中的所定义的变量就是局部变量,指在所在函数起作用。
-
三步运算符:例: temp = x>y? x:y;
-
函数的嵌套
-
函数的递归
#include#include unsigned int getReson (int x)//long int 长整型也是4个字节 unsigned无符号整型 { unsigned int y; if (x > 16){ printf("越界n"); exit(-1); } if (x == 1){ y = 1; }else { y = getReson(x-1) * x; } return y; } int main () { //递归函数,一边用于求阶乘或其他特殊情况 int x; unsigned int y; printf ("请输入你要计算的阶乘:"); scanf("%d",&x); y = getReson(x); printf("%d的阶乘是:%ldn",x,y); return 0; }
-
数组与函数
数组与函数的结合目前实际应用不大,着重数组名当成实际参数。
void printfArry(int a[],int len)//形参中不存在数组的概念,即便中括号定义了数组的大小也没用
//传递的是数组的首地址,再操作系统中用8个字节(32位)表示一个地址
//数组是传递地址,而其他不是传递地址而是数值传递
{
int i;
for (i=0;i
-
二维数组与函数
合法写法:int a[3][4]
int a[][4]
不合法写法:int a[][]
定义二维数组的函数时,必须计算二维数组中一维数组中元素的个数
#include
void initArry (int arry[][4],int hang,int lie)
{
int i,j;
for(i=0;i
全局变量
作用范围:整个.c文件
在函数外直接定义变量称为全局变量,放在函数与函数之间,只作用于后面的函数。
#include
int max;
int min;
float getAvr(int scores[],int len)
{
int i;
int sum = 0;
max = min = scores[0];
for(i=0;i scores[i]){
min = scores[i];
}
}
return (float)sum/len;
}
int main ()
{
//全局变量
int scores[]={11,21,35,49,59,68,78,89,99,100};
float avr;
avr = getAvr(scores,sizeof(scores)/sizeof(scores[0]));
printf("最大值是%d,最小值是%d,平均分是:%.2f",max,min,avr);
return 0;
}
函数小练习
函数与冒泡排序法
#include
void initNum(int a[],int len)
{
int i;
for (i=0;i
函数与简单排序法
#include
void initArry(int arry[],int len)
{
int i;
for(i=0;i
补充
ASCⅡ码



