目录
一、二维字符型数组
1.1.含义
用来存储字符串数组
1.2.定义
数据类型 数组名[第一维元素个数][第二位元素个数];
char str[2][5];
1.3.元素访问
数组名[下标][下标];
str[0][2];
1.4.存储
1.连续性
2.有序性
1.5.初始化
1.局部初始化
char str[3][32] = {{"hello"},{"world"}};
char str[3][32] = {0};
2.默认初始化
char str[][23] = {{"hello"},{"world"}};
3.全部初始化(元素太多,一般不用)
二、函数
2.1.函数作用
1.让程序模块坏;
2.减少重复性代码;
2.2.函数的定义
函数类型 函数名(数据类型1 形参1, 数据类型2 形参2, ...)
{
函数体;
return 返回值;
}
函数名:和变量名要求保持一致
函数类型:函数运行结果的类型(如果返回值类型与函数类型不一致,会将返回值强制类型转换成函数类型返回)
不写函数类型默认为int类型;
如果没有返回值,函数类型应该为void类型;
返回值:函数的运行结果
形参:形式参数(做个样子)
注意:函数没有返回值,return后面什么都不写
2.3.函数的调用
函数名(实参1, 实参2, ...);
注意:
1.实参个数必须与形参个数一致,并一一对应
2.实参可以是常量、变量、表达式
3.实参与形参类型不一致时,会将实参强制类型转换为形参类型,传入函数中
4.函数调用时会发生传参的过程(实参将值传递给形参)
2.4.函数的声明
声明和定义的区别:
声明:声明一个已经存在的变量或函数
定义:定义一个之前不存在的变量或函数,需要开辟新的空间
注意:被调函数在主调函数下方定义,需要声明该函数
三、变量的作用域和生命周期
内存分布图
3.1.作用域
1.含义
变量能够使用的范围
2.类型
局部变量:
局部变量作用域在离定义该变量最近的大括号内
全局变量:
全局变量作用域在整个文件中
3.2.生命周期
1.含义
变量从开始被创建,到空间被回收的整个过程
2.存储类型
1)自动行存储(局部存储)(默认存储类型)
auto int a;
int a;
将变量存放到栈区中:
1.未经初始化值为随机值
2.代码执行到变量定义时为变量开辟空间
3.超过变量的作用域回收变量空间
2)静态存储
static int a;
将变量存放到数据区中:
1.未经初始化前值为0值
2.编译时为变量开辟空间
3.代码执行结束回收变量空间
除了修饰静态变量,还有2个功能:
1.限定变量的作用域只能在本文件中使用
2.可以防止多个文件中的全局变量重名
3)寄存器存储
register int a;
优先存放到CPU内部的寄存器中,如果寄存器存满了,等价于auto存放在栈区中
4)外部存储
extern int a;
声明一个变量或函数是在外部存储的
四、总结
今天是2024年7月19日,嵌入式学习的第8天,C语言已经学习过半了,明显能够感觉到难点和强度上来了,不过啃就要啃硬骨头。今天学习的变量的存储类型感觉不是很好理解,这点得注意了好好理理思路。
加油!