=====================================
本节课程内容:
1,函数
2,数组
3,指针
=====================================
一,函数
1,概念
函数是对一段实现某个功能的代码块的封装。
2,函数的作用
1》避免写重复的代码
2》使程序模块化
3》有利于程序的维护和升级
3,函数的定义(实现)
格式:
返回值类型 函数名(参数列表) //函数头
{
要封装的代码块 //函数体
}
例如:
//函数的定义
void farsight(void) //函数头,void空类型,作为函数的返回值类型,表示该函数没有返回值,如果参数列表为void表示该函数没有参数
{ //函数体
printf("华清远见\n");
printf("2206班\n");
printf("我是刘老师\n");
printf("欢迎大家学习嵌入式\n");
}
4,函数的使用(调用)和声明
1》函数的调用
格式:
函数名(); 或 函数名(参数列表);
例如:
farsight(); //函数调用
fun(a,b); //函数的调用
2》函数的声明
为什么要声明?
当被调用函数在调用函数的后面定义时,需要在调用之前先声明
怎么声明?
声明函数的格式: 函数头+;
#include <stdio.h>
void fun(int a,int b); //函数的声明
int main(void)
{
int a,b;
printf("请输入a和b:");
scanf("%d%d",&a,&b);
fun(a,b); //函数的调用
return 0;
}
//函数的定义
void fun(int a,int b)
{
int max;
max = a > b ? a : b;
printf("max = %d\n",max);
}
5,函数传参
1》函数的形参和实参
形参:形式参数
在函数头中定义的变量,成为函数的形式参数,简称形参。
形参必须是变量
形参由实参初始化
实参:实际参数
在函数调用语句中传递的参数,成为实际参数,简称实参。
实参可以是变量,常量,表达式,指针等
例如:
fun(a,b); //函数的调用
fun(a+3,b-2);
fun(12,45);
2》函数的传参方式
值传递:
形参类型和实参类型相同
在被调用函数中,不能修改实参的值(不能给实参赋值)
地址传递:
形参类型是实参类型的对应的指针类型
在被调用函数中,可以修改实参的值(给实参赋值)
例如:
void fun01(int x,int y) //在该函数中不能修改实参,只能使用实参
{
printf("%d,%d\n",x,y);
x = 100;
y = 200;
}
void fun02(int* x,int* y) //在该函数中,可以修改实参的值
{
*x = 120;
*y = 340;
}
int main(void)
{
int a,b;
printf("请输入a和b:");
scanf("%d%d",&a,&b);
fun01(a,b); //值传递
fun02(&a,&b); //地址传递
printf("a = %d\n",a);
printf("b = %d\n",b);
return 0;
}
6,函数的返回值
int fun(int a,int b)
{
int sum;
sum = a + b;
return sum;
}
int main(void)
{
int a,b;
int sum;
printf("请输入a和b:");
scanf("%d%d",&a,&b);
sum = fun(a,b); //将hanshufun的返回值保存到sum中
printf("sum = %d\n",sum);
printf("sum = %d\n",fun(a,b)); //将函数fun的返回值直接打印到屏幕
return 0;
}
7,return语句的用法
1》在main函数中使用
表示结束程序,返回到系统中
例如:
int main(void)
{
printf("华清远见\n");
printf("2206班\n");
return 0; //结束程序,返回系统
printf("我是刘老师\n");
printf("欢迎大家学习嵌入式\n");
return 0;
}
2》在其他函数中使用
表示结束当前函数的执行,返回到调用该函数的位置
例如:
//函数的定义
void farsight(void)
{
printf("华清远见\n");
printf("2206班\n");
return ; //结束当前函数,返回到调用该函数与的位置
printf("我是刘老师\n");
printf("欢迎大家学习嵌入式\n");
}
int main(void)
{
farsight(); //函数调用
printf("我是主函数\n");
return 0;
}
8,全家变量
1》概念
在所有函数外定义的变量称为全局变量。
2》如何使用
全局变量在所有函数中都可以使用
但,如果函数中定义了同名的局部变量,则此函数中是不能使用该同名的全局变量
例如:
int x1 = 100;
//因为x2和x3在后面定义,在前面要使用,所以需要先声明
int x2;
int x3;
//函数的定义
void fun(int a,int b)
{
int max;
int x2 = 1209;
max = a > b ? a : b;
printf("max = %d\n",max);
printf("x1 = %d,x2 = %d,x3 = %d\n",x1,x2,x3);
}
int x2 = 200;
int main(void)
{
int a,b;
printf("请输入a和b:");
scanf("%d%d",&a,&b);
fun(a,b); //函数的调用
printf("x1 = %d,x2 = %d,x3 = %d\n",x1,x2,x3);
return 0;
}
int x3 = 300;