老婆出轨 发表于 2024-1-3 03:44:45

十二、指针和引用

十二、指针和引用(二)

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]
查看完整版本: 十二、指针和引用