今天,将为大家带来函数的一个讲解,在讲解之前呢,在为大家讲一下二维字符数组,因为字符串在后面也是十分常用的,得掌握,那废话不多说,开始今天的学习吧:
1、二维字符型数组
1.1. 概念
主要用于存放字符串数组
二维数组是一维数组的数组,字符串使用一位字符串数组存储,字符串数组使用二维字符数组存储
1.2.定义
char str[行数][列数];
char str[32][32];
1.3 元素访问
str[行数][列数]; //访问的是一个char类型元素
str[行数]; //访问的是一维数组,即一行的数据
1.4 初始化
一般对于字符串,不常用全部初始化
1. 局部初始化:
char str[5][32] = {"hello", "world", "how", "are", "you"}
char str[5][32] = {0};
2. 默认初始化:
char str[][32] = {"hello", "world", "how", "are", "you"}
讲解完二维字符数组后,数组就先告一段落了,就进入函数的一个学习了,继续跟随博主的脚步吧!
2、函数
2.1 基本概念
1.功能:
(1)避免重复性代码
(2)程序模块化
2.函数的三种形式:
(1)函数的定义
函数类型 函数名(数据类型1 形参1,数据类型2 形参2,…)
{
语句块;
return 返回值;
}
函数类型:函数运行结果的类型,如果省略不写,默认int类型,可以写成void 表示没有结果
函数名:与变量名要求一致
形参:形式参数,展示对数据的操作方法
返回值:函数的运行结果,如果与函数类型不一致,需要将返回值强制转换为函数类型
(2)函数的调用
函数名(实参1,实参2,…);
注意:
函数调用时,实参会将自己的值传递给形参
(3)函数的声明
如果被调函数在主调函数的下方定义,需要在主调函数的上方对被调函数声明
2.2 变量的作用域与生命周期
1.作用域:
一个变量能够使用的范围
局部变量:变量作用域在局部范围内(定义变量最近的大括号内),出了作用域无法使用
全局变量:变量作用域在全局范围内,整个代码任意位置都可以使用全部变量
全局变量可以和局部变量重名,局部范围内,局部变量会将全局变量隐藏
2.生存周期:
变量从被创建到被回收的整个过程称为生存周期
存储类型 数据类型 变量名;
存储类型:
1.auto 自动型变量、局部变量(默认存储类型)
将变量存放在栈区
特点:
(1)未经初始化,值为随机值
(2)程序运行到变量定义时,为变量开辟空间
(3)程序运行超过变量作用域时,回收变量空间
2. register 寄存器变量
将变量存放在CPU内部的寄存器中,寄存器存满则存放在栈区等价于auto类型
3.extern 声明外部变量
引用一个外部定义的变量,需要在当前文件中声明该变量为外部存储类型
4. static 静态变量
(1)延长变量生存周期,在编译时分配空间,代码运行结束回收空间
(2)限定变量或者函数只能在本文件中使用
(3)防止多文件全局变量重名
特点:
(1)未经初始化,值为0;
(2)变量在编译时开辟空间;
(3)程序结束回收空间
今天函数就先讲到这里吧,多了大家也记不住,今天的内容也是特别重要的,得掌握,然后呢,还是在给大家用图讲解一下32位操作系统的一个C语言内存分布吧:

由上图所示,我们一般只关注栈区、堆区、数据区以及文本区,前三个区是我们需要重点关注的,各区存放的都是些什么数据,得掌握清楚。
好了,今天的内容就给大家讲到这里了,下次还是继续为大家讲解函数的内容,敬请期待!各位友友,觉得该内容对你有用的,别忘了点点赞,一键三连,如果有错误或有不同看法,还请评论区见。





