一、函数
1、函数的概念:
在C语言中,函数指的是具有特定功能的代码块,由函数头和函数体组成。
2、函数的作用:
1》避免重复写代码
2》可以使程序模块化,提高程序开发效率
3》便于后期对软件的更新和维护
3、函数的定义:
返回值类型 函数名(类型 参数名,类型 参数名,类型 参数名) 函数头
{ 函数体
语句;
语句;
......
return 数据;
4、函数的基本概念: 1》函数的定义(实现): 指的是一段代码的封装 2》函数的调用: 是一条语句,通常会给函数传递一些参数(数据) 3》函数的声明: 当函数的定义写在函数调用之后时,需要对该函数进行声明,声明是一条语句,即:函数头 加 ;
----》形参:形式参数
-----》在函数的头部定义的变量
-----》只能在该函数中使用
-----》形参的初始值是通过函数调用传递的
-----》在内存中有独立的空间
-----》一定是变量
----》实参:实际参数
-----》如果有定义,一定在调用函数中定义
-----》也只能在定义它的函数中使用
-----》通过函数调用语句传递给给形参
-----》实参可以是:常量,变量,指针,数组,结构体等
-----》在内存中有独立的空间
----》形参和实参的关系
-----》相互独立
-----》形参通过实参初始化
----》实参为数组
----》实参为结构体/共用体
----》实参为函数
6、全局变量
1》通常把在代码块中定义的变量称为局部变量,例如:
1、函数的概念:
在C语言中,函数指的是具有特定功能的代码块,由函数头和函数体组成。
2、函数的作用:
1》避免重复写代码
2》可以使程序模块化,提高程序开发效率
3》便于后期对软件的更新和维护
3、函数的定义:
返回值类型 函数名(类型 参数名,类型 参数名,类型 参数名) 函数头
{ 函数体
语句;
语句;
......
return 数据;
}
<pre name="code" class="cpp">//函数定义
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 <stdio.h>
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》传参的种类,根据实参可以将传参分为以下这几种情况
----》实参为常量:(字符串常量除外)
传参方式:值传递
----》实参为变量:(基本类型的变量)
---》值传递:
#include <stdio.h>
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) //调用函数
{
<span style="white-space:pre"> </span>int a,b;
<span style="white-space:pre"> </span>a = 3;
<span style="white-space:pre"> </span>b = 5;
<span style="white-space:pre"> printf("a = %d,b = %d\n",a,b);
<span style="white-space:pre"> </span>fun2(a,b); //值传递
<span style="white-space:pre"> </span>printf("a = %d,b = %d\n",a,b);</span>
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>return 0;
}
---》地址传递:
<pre name="code" class="cpp">#include <stdio.h>
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 <stdio.h>
int main(void) //调用函数
{ //代码块
int a; //局部变量
a = 10;
//代码块
{
int b; //局部变量
b = 20;
printf("b = %d\n",b);
}
printf("a = %d\n",a);
return 0;
}
2》通常把在所有代码块外定义的变量称为全局变量,例如:
<img src="https://img-blog.csdn.net/20160919233148148?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
<span style="white-space:pre"> </span>3》全局变量的使用:
<span style="white-space:pre"> </span>----》可以在所有代码块中使用全局变量
<span style="white-space:pre"> </span>----》如果函数中定义了同名的局部变量,则该全局变量不能在该函数中使用,在该函数中所使用的只能是同名的局部变量