数组和字符串深度解析 —深入存储、编码与性能的本质

📅 2026/7/13 6:51:00 👁️ 阅读次数 📝 编程学习
数组和字符串深度解析 —深入存储、编码与性能的本质

1、一维数组:有序、类型相同的数据集合,数组名代表起始地址,元素下标从0开始

2、一维数组语法:存储类型 数据类型 数组名[数组长度];长度只能是常量 / 常量表达式(>0)

3、一维数组的内存特性:地址连续,每个元素占用字节数 = 数据类型字节数(如 float 占 4 字节)

4、二维数组:由行和列组成的表格,可看作一维数组的数组

5、二维数组的内存特性:按行连续存储,先存完一行再存下一行

6、字符数组:

一维:存 1 个字符串

二维:存多个字符串(每行 1 个)

7、常用字符串函数:

strlen:求字符串长度,不含 '\0'

strcpy:复制字符串,目标需足够大

strcat:拼接字符串,末尾保留 1 个 '\0'

strcmp:逐字符 ASCII 比较,返回 <0/=0/>0

strstr:查找子串,返回首次出现地址 / NULL

8、类型转换函数:

atoi:字符串转整型

atof:转浮点

atol:转长整型

sprintf:格式化数据转字符串存入数组

9、数组的优点和缺点:

优点:访问效率高

缺点:数组不能扩容,有时候定义太多造成内存浪费;在中间插入数据时要搬移大量的数据,效率低

9、sizeof和strlen 的区别:

(1)sizeof占用内存大小,strlen计算字符串个数

(2)sizeof运算符 strlen是函数

10、定义数组时,如果没有给初始化,默认是随机值,系统不会给初始化0

11、数组初始化,用{}包起来,每个元素逗号隔开;元素的个数小于等于n,系统会自动补零

12、a[i]=*(a+i) 无条件等价