(六)函数

一、函数
1、函数的概念:
在C语言中,函数指的是具有特定功能的代码块,由函数头和函数体组成。
2、函数的作用:
1》避免重复写代码
2》可以使程序模块化,提高程序开发效率
3》便于后期对软件的更新和维护
3、函数的定义:
返回值类型 函数名(类型 参数名,类型 参数名,类型 参数名)     函数头
{ 函数体
语句;
语句;
......
return 数据;

}

//函数定义
int fun(int x,int y)   //被调用函数
{
	int b;

	b = x * y;
	
	return b;
}

int main(void)  //调用函数
{
	int a,b;
	int s;

	scanf("%d%d",&a,&b);	
	//s = a * b;
	s = fun(a,b);   //函数调用

	printf("%d * %d = %d\n",a,b,s);	
	
	return 0;
}

 4、函数的基本概念: 
  1》函数的定义(实现): 
  指的是一段代码的封装 
  2》函数的调用: 
  是一条语句,通常会给函数传递一些参数(数据) 
  3》函数的声明: 
  当函数的定义写在函数调用之后时,需要对该函数进行声明,声明是一条语句,即:函数头 加 ; 
  
#include 

int fun(int x,int y);   //函数的声明

int main(void)  //调用函数
{
	int a,b;
	int s;

	scanf("%d%d",&a,&b);	
	//s = a * b;
	s = fun(a,b);   //函数调用

	printf("%d * %d = %d\n",a,b,s);	
	
	return 0;
}

//函数定义
int fun(int x,int y)   //被调用函数
{
	int b;

	b = x * y;
	
	return b;
}
4》函数的形参与实参
----》形参:形式参数
-----》在函数的头部定义的变量
-----》只能在该函数中使用
-----》形参的初始值是通过函数调用传递的
-----》在内存中有独立的空间
-----》一定是变量
----》实参:实际参数
-----》如果有定义,一定在调用函数中定义
-----》也只能在定义它的函数中使用
-----》通过函数调用语句传递给给形参
-----》实参可以是:常量,变量,指针,数组,结构体等
-----》在内存中有独立的空间
----》形参和实参的关系
-----》相互独立
-----》形参通过实参初始化

5、函数传参:
1》参数的传递方式
----》值传递
---》传的是数值
---》在被调用函数中,不能企图取改变实参
---》形参的类型和实参类型相同
----》地址传递
---》传的是地址
---》在被调用函数中,可以改变实参
---》形参的类型是实参类型的指针类型
2》传参的种类,根据实参可以将传参分为以下这几种情况
----》实参为常量:(字符串常量除外)

传参方式:值传递

(六)函数_第1张图片

----》实参为变量:(基本类型的变量)
---》值传递:

#include 

void fun2(int x,int y)
{
	int t;
	printf("in_fun2:%d,%d\n",x,y);
	t = x;
	x = y;
	y = t;
}
int main(void)  //调用函数
{
	int a,b;
	a = 3;
	b = 5;
	printf("a = %d,b = %d\n",a,b);
	fun2(a,b);  //值传递
	printf("a = %d,b = %d\n",a,b);
	
	return 0;
}
---》地址传递:
#include 

void fun3(int* x,int *y)
{
	int t;
	t = *x;
	*x = *y;
	*y = t;
}

int main(void)  //调用函数
{
	int a,b;
	a = 3;
	b = 5
	
	printf("a = %d,b = %d\n",a,b);
	fun3(&a,&b);  //地址传递
	printf("a = %d,b = %d\n",a,b);
	
	return 0;
}
----》实参为指针
----》实参为数组
----》实参为结构体/共用体
----》实参为函数
6、全局变量
1》通常把在代码块中定义的变量称为局部变量,例如:
#include 

int main(void)  //调用函数
{   //代码块
	int a;  //局部变量
	a = 10;
	//代码块
	{
		int b;  //局部变量
		b = 20;
		printf("b = %d\n",b);
	}
	
	printf("a = %d\n",a);
	
	return 0;
}
2》通常把在所有代码块外定义的变量称为全局变量,例如:

 
  
	3》全局变量的使用:
		----》可以在所有代码块中使用全局变量
		----》如果函数中定义了同名的局部变量,则该全局变量不能在该函数中使用,在该函数中所使用的只能是同名的局部变量




你可能感兴趣的:(C语言基础)