十二、指针和引用
十二、指针和引用(二)1、指针和数组的关系
1)思考
假设你要设计一种编程语言,你要如何实现数组呢?思考之前请先牢记:数组在内存中是连续的,维度由低到高(大部分操作系统下)。
2)汇编分析数组如何实现
//C++代码#include int main(){ int a{}; int* ptrA{ &a }; *ptrA = 5; //通过指针设置数组的值 a = 5; //通过数组下标设置数组的值 a = 5;}//上述代码汇编分析 int a{}; int* ptrA{ &a };00A51840mov eax,4 //eax=400A51845imul ecx,eax,0 //imul为乘法,即ecx=eax*0=000A51848lea edx, //edx=ebp+ecx-1Ch=ebp-1Ch00A5184Cmov dword ptr ,edx //ptr表示指针,即=ebp-1Ch, []中的表示地址 *ptrA = 5; 00A5184Fmov eax,dword ptr //eax= 即eax=ebp-1Ch00A51852mov dword ptr ,5 //=5,即=5,即a=5 a = 5;00A51858mov eax,4 //eax=400A5185Dimul ecx,eax,0 //ecx=eax*0=000A51860mov dword ptr ,5 //=5,即=5 a = 5;00A51868mov eax,4 //eax=400A5186Dshl eax,0 //shl为左位移,即eax
页:
[1]