一、二维字符型数组
1. 功能
二维字符型数组主要用于存储和操作字符串数组。
2. 定义
char str[5][32];定义了一个包含5个字符串的数组,每个字符串最大长度为31个字符(加上结束符'\0')。
3. 元素的访问
str[0][2]:访问单个字符元素(char类型)str[0]:访问第一行字符数组(char [32]类型)
4. 数组的初始化
4.1 二维整型数组初始化示例
int a[2][3] = {1, 2, 3, 4, 5, 6}; int a[2][3] = {{1, 2, 3}, {4, 5, 6}}; int a[2][3] = {1, 2, 3, 4}; int a[2][3] = {{1, 2}, {3}}; int a[2][3] = {0}; int a[2][3] = {{0}};int a[][3] = {1, 2, 3, 4, 5, 6}; int a[][3] = {1, 2, 3, 4}; int a[][3] = {{1, 2}, {3}};4.2 二维字符数组初始化示例
// 方式1:逐个字符初始化 char str[5][32] = { {'h', 'e', 'l', 'l', 'o', '\0'}, {'w', 'o', 'r', 'l', 'd', '\0'}, {'h', 'o', 'w', '\0'}, {'a', 'r', 'e', '\0'}, {'y', 'o', 'u', '\0'} }; // 方式2:字符串初始化(带花括号) char str[5][32] = { {"hello"}, {"world"}, {"how"}, {"are"}, {"you"} }; // 方式3:字符串初始化(简化) char str[5][32] = {"hello", "world", "how", "are", "you"}; // 方式4:全部初始化为0 char str[5][32] = {0}; // 方式5:省略第一维大小 char str[][32] = {"hello", "world", "how", "are", "you"};二、函数
1. 功能
- 能够避免重复性代码
- 可以让程序模块化
2. 函数的三种形式
2.1 函数的定义
函数类型 函数名(数据类型1 形参1, 数据类型2 形参2, ...) { 函数体; return 返回值; }函数名:与变量名要求保持一致
形参:形式参数,用来展示函数对数据的处理方式
函数类型:函数运行结果的类型
- 返回值类型与函数类型不一致时,以函数类型为准
- 函数类型如果不写默认为int类型
- 如果想设置为void类型返回值,必须将函数类型写成void
返回值:函数的运行结果
2.2 函数的调用
函数名(实参1, 实参2, ...);调用:可以通过函数名加实参使用函数
- 主调函数:主动调用函数的函数称为主调函数
- 被调函数:被别人调用的函数称为被调函数
传参:主调函数调用被调函数,会将实参的值传递给形参
- 实参个数与形参个数必须一一对应
- 如果实参与形参类型不匹配,则将实参类型强制类型转换为形参类型再传参
函数调用结果类型为函数类型
函数调用结果的值为函数的返回值
2.3 函数的声明
- 如果被调函数在主调函数下方定义,需要在主调函数上方声明被调函数
- 如果被调函数在主调函数上方定义,不需要声明被调函数
3. 变量的作用域和生存周期
3.1 变量的作用域:能够使用变量的范围
- 局部变量:变量作用域在定义该变量最近的大括号内
- 全局变量:变量的作用域在本文件中均可使用
3.2 变量的生存周期:变量从被开辟空间到空间被回收的整个过程称为生存周期
4. 变量的存储类型
4.1 变量的定义
存储类型 数据类型 变量名; int a; auto int a;4.2 存储类型
- 自动型存储、局部变量(默认):auto
- 将变量存放在栈区
- 局部变量未经初始化为随机值
- 执行到变量定义时为变量开辟空间
- 执行到超过变量作用域范围被回收
- 寄存器存储:register
- 将变量存放在CPU内部的寄存器中,如果寄存器存满了等价于auto类型
- 外部声明:extern
- 声明变量或者函数是外部存储的
- 静态存储:static
- 将变量存放在静态区中
- 未经初始化时值为0值
- 编译代码时为变量分配空间,执行时加载到数据区中
- 程序结束回收空间
- 限定变量/函数作用域只能在本文件中使用
- 防止多文件编程时变量名或函数名冲突
5. 函数传参
5.1 值传递
实参将值传递给形参,形参拿到实参的值实现后续的操作