指针数组

C代码:

 int *p[3];    //定义指针数组
 int i1 = 3;
 int i2 = 4;
 int i3 = 5;
 p[0] = &i1; //取i1地址 放入数组下标0中
 p[1] = &i2;
 p[2] = &i3;

 
 printf("p[0]:%d\n",*p[0]); //输出数组下标0里的指针 指向的内容
 printf("p[1]:%d\n",*p[1]);
 printf("p[2]:%d\n",*p[2]);

 

反汇编:

 int *p[3]; 
 int i1 = 3;
0041358E  mov         dword ptr [i1],3   //放入i1地址指向的位置中
 int i2 = 4;
00413595  mov         dword ptr [i2],4 
 int i3 = 5;
0041359C  mov         dword ptr [i3],5 
 p[0] = &i1;
004135A3  lea         eax,[i1]        //取i1的地址
004135A6  mov         dword ptr [p],eax //取i1的地址放入数组下标0中
 p[1] = &i2;
004135A9  lea         eax,[i2] 
004135AC  mov         dword ptr [ebp-0Ch],eax 
 p[2] = &i3;
004135AF  lea         eax,[i3] 
004135B2  mov         dword ptr [ebp-8],eax

 
 printf("p[0]:%d\n",*p[0]);
004135B5  mov         esi,esp 
004135B7  mov         eax,dword ptr [p] 
004135BA  mov         ecx,dword ptr [eax] 
004135BC  push        ecx  
004135BD  push        offset string "p[0]:%d\n" (4158ACh) 
004135C2  call        dword ptr [__imp__printf (4182B8h)] 
004135C8  add         esp,8 
004135CB  cmp         esi,esp 
004135CD  call        @ILT+300(__RTC_CheckEsp) (411131h) 
 printf("p[1]:%d\n",*p[1]);
004135D2  mov         esi,esp 
004135D4  mov         eax,dword ptr [ebp-0Ch] 
004135D7  mov         ecx,dword ptr [eax] 
004135D9  push        ecx  
004135DA  push        offset string "p[1]:%d\n" (4158A0h) 
004135DF  call        dword ptr [__imp__printf (4182B8h)] 
004135E5  add         esp,8 
004135E8  cmp         esi,esp 
004135EA  call        @ILT+300(__RTC_CheckEsp) (411131h) 
 printf("p[2]:%d\n",*p[2]);
004135EF  mov         esi,esp 
004135F1  mov         eax,dword ptr [ebp-8] 
004135F4  mov         ecx,dword ptr [eax] 
004135F6  push        ecx  
004135F7  push        offset string "p[2]:%d\n" (4156B0h) 
004135FC  call        dword ptr [__imp__printf (4182B8h)] 
00413602  add         esp,8 
00413605  cmp         esi,esp 
00413607  call        @ILT+300(__RTC_CheckEsp) (411131h)

内存显示:

0x0012FF58  4c ff 12 00 40 ff 12 00 34 ff 12 00 cc cc cc cc b8 ff  12FF4C数组下标0地址里面值为3,12FF40 数组下标1地址里面值为4,12FF34 数组下标2地址里面值为5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值