之前的笔记搬运
0x1 如何确定一块区域是数组
一个区域有很多个同样类型, 同样逻辑的元素, 并且连续的存储块就是数组,
或者可以从汇编代码的角度去确定, 拥有比例因子寻址的肯定是数组,
以下是多个维度的数组优化后的计算地址的公式
一维数组:
1 | ary[n] |
二维数组
1 | ary[n][m] |
三维数组
1 | ary[n][m][h] |
0x2 如何确定数组的大小
一般情况下, 有数组肯定会有循环, 通过循环次数可以确定范围
0x3 字符数组
以/0结尾的字符数组也可以叫做字符串, 是由一堆char型变量组成的存储单元
字符数组的初始化汇编体现:
1 | 字符数组初始化是四字节步长一直赋值, 直到不够四字节再减少长度完成赋值 |
以上定式是VS2013以下的编译器生成的无分支求长度和拷贝代码,
在VS2013以上都是用循环和条件语句来代替了