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

数组和字符串深度解析 —深入存储、编码与性能的本质 1、一维数组有序、类型相同的数据集合数组名代表起始地址元素下标从0开始2、一维数组语法存储类型 数据类型 数组名[数组长度]长度只能是常量 / 常量表达式03、一维数组的内存特性地址连续每个元素占用字节数 数据类型字节数如 float 占 4 字节4、二维数组由行和列组成的表格可看作一维数组的数组5、二维数组的内存特性按行连续存储先存完一行再存下一行6、字符数组一维存 1 个字符串二维存多个字符串每行 1 个7、常用字符串函数strlen求字符串长度不含 \0strcpy复制字符串目标需足够大strcat拼接字符串末尾保留 1 个 \0strcmp逐字符 ASCII 比较返回 0/0/0strstr查找子串返回首次出现地址 / NULL8、类型转换函数atoi字符串转整型atof转浮点atol转长整型sprintf格式化数据转字符串存入数组9、数组的优点和缺点优点访问效率高缺点数组不能扩容有时候定义太多造成内存浪费在中间插入数据时要搬移大量的数据效率低9、sizeof和strlen 的区别:1sizeof占用内存大小,strlen计算字符串个数2sizeof运算符 strlen是函数10、定义数组时如果没有给初始化默认是随机值系统不会给初始化011、数组初始化用{}包起来每个元素逗号隔开元素的个数小于等于n系统会自动补零12、a[i]*(ai) 无条件等价