理解双指针
来源:互联网 发布:linux dracut 编辑:程序博客网 时间:2024/05/22 20:28
struct stu1
{
int i;
int j;
};
void func1(stu1** tmpp)
{
*tmpp = new stu1;
}
void main()
{
stu1* p = 0;
func1(&p);
}
反汇编代码:
void func1(stu1** tmpp)
10: {
00401020 55 push ebp
00401021 8B EC mov ebp,esp
00401023 83 EC 44 sub esp,44h
00401026 53 push ebx
00401027 56 push esi
00401028 57 push edi
00401029 8D 7D BC lea edi,[ebp-44h]
00401031 B8 CC CC CC CC mov eax,0CCCCCCCCh
11: *tmpp = new stu1;
00401038
00401042 89 45 FC mov dword ptr [ebp-4],eax // new 返回值保存在ebp-4内存处
00401045 8B 45 08 mov eax,dword ptr [ebp+8] // main函数种ebp-4的值赋值给eax 即p的地址
00401048 8B 4D FC mov ecx,dword ptr [ebp-4] //
0040104B 89 08 mov dword ptr [eax],ecx
12: }
0040104D
0040104E 5E pop esi
00401050
00401053 3B EC cmp ebp,esp
00401055 E8 86 00 00 00 call __chkesp (004010e0)
0040105D C3 ret
void main()
15: {
00401070 55 push ebp
00401071 8B EC mov ebp,esp
00401073 83 EC 44 sub esp,44h
00401076 53 push ebx
00401077 56 push esi
00401078 57 push edi
00401079 8D 7D BC lea edi,[ebp-44h]
00401081 B8 CC CC CC CC mov eax,0CCCCCCCCh
16: stu1* p = 0;
17:
18: func1(&p);
00401092 50 push eax
00401093 E8 72 FF FF FF call @ILT+5(func1) (
00401098
19:
20: }
0040109B
0040109D 5B pop ebx
0040109E
004010AA 5D pop ebp
004010AB C3 ret
总结:指针,双指针其实就是c,c++等高级语言提供的一种语法,程序员通过这种语法能够编写灵活的代码,
然后通过c,c++等高级语言相对应的编译器,编译成汇编代码!就如上例中所示,
指针p 被编译成
在func1()函数中
00401042 89 45 FC mov dword ptr [ebp-4],eax // new 返回值保存在ebp-4内存处
00401045 8B 45 08 mov eax,dword ptr [ebp+8] // main函数中ebp-4的值(即p的地址 )赋值给eax
00401048 8B 4D FC mov ecx,dword ptr [ebp-4] // new 函数返回值保存到ecx
0040104B 89 08 mov dword ptr [eax],ecx // new函数的返回值赋值给main函数中ebp-4内存,即修改了p指针的值。
- 理解双指针
- 深入理解双指针
- 深入理解双指针 .
- 理解双指针
- 深入理解双指针
- 关于双指针的理解
- 怎么理解指向指针的指针(双指针 **)
- 理解指针
- 理解指针
- 理解指针
- 理解指针
- 指针理解
- 指针理解
- 理解指针
- 理解指针
- 指针理解
- 理解指针
- 指针理解
- Dxperience8.1.1本地汉化
- Event Method Sequences when a Form is Opened
- enum类型的本质
- Oh! Boy! 天啊!
- DWR查询与填充Table
- 理解双指针
- 几条常见的数据库分页 SQL 语句(来源:Internet)
- Everyday English Learning
- 求助weblucene的安装部署问题
- 如何挑选适合自己的第一双单排鞋
- 与星期有关的短语
- 转: SPQuery查询语法简要说明
- “上大号”怎么说
- 中的rel和type是什么意思?