嵌入式C语言数组:数组/字符数组
1. 数组
1.1 一维数组
数组是一串连续的地址;
数组名是地址常量,代表数组的起始地址;
sizeof(数组名) 可得出数组的总内存空间;
C 语言对数组不做越界检查,使用时应注意;
数组不初始化,元素随机;
1.2 二维数组
二维数组的定义:可以省略行,不可以省略列
在内存中的存储是连续的,一维的,按行优先的
两维数组可以看成由多个一维数组组成
二维数组行号相当于一维数组名
二维数组初始化:
2. 字符数组
字符数组是数据类型为字符的数组
只不过其使用频率较高,需要重点学习
2.1 字符数组初始化
字符数组分为一维数组与二维数组;
2.1.1 一维数组逐个字符初始化
整型数组的默认值:0
字符数组的默认值:\0
指针部分默认值:null
他们三个代表的都是 0 ;
2.1.2 一维数组字符串常量初始化
不同方式的打印:
注意
只有真正是字符串的时候,才用 %s 打印输出;
在 linux 与 vs2022 环境下分别尝试,出现了不同的结果,最好使用 putchar 打印字符数组;
以下是不同输出格式打印输出字符数组:
C 语言中没有字符串变量,用字符数组处理字符串;
注意字符串结束标志:\0
"hello"共五个字符,长度为五,但占六个内存;
该图(字符串二维数组)更能详细地表明字符串的内存存储情况;
2.1.3 二维数组初始化
按照常规思路,二维数组可以这样初始化;
对于二维字符数组,一般这样初始化;
遍历:
方法一:常规思想遍历
也可以用其他方法:
2.1.4 题目
控制台输入字符串并逆序打印输出;
注意:gets() 输出形式为字符串,默认追加一个 \0,且可能会有溢出,占据相邻存储空间;
2.2 字符串函数
字符串函数被封装在头文件 #include<string.h> 中
常用的字符串处理函数函数有:strlen,strcpy,strcat,strcmp
2.2.1 求字符串长度 strlen
返回字符串的实际/有效长度,不包括 “\0”
以下代码测试中,“\0”后面的字符为无效字符,不会算作字符串的实际长度
此外,sizeof() 计算的是字符串所占的存储空间大小,不同于strlen() 计算的实际长度
以下代码是对字符串求长度,注意字符串默认以“ \0 ”结尾,因此两函数值不同;
2.2.2 字符串拷贝函数 strcpy
格式:strcpy(字符数组1 ,字符串 2)
将字符串 2 拷贝到字符数组 1 中去,并返回字符数组 1 的首地址
注意:字符数组 1 必须足够大;拷贝时连同 ’ \0‘ 一同拷贝