坦_然 发表于 2013-7-4 13:43:13

指针和地址,配图.望对新人有帮助

http://bbs.fishc.com/data/attachment/album/201307/04/133209euuabpta5vxqvqlv.png
指针就是地址的说法,很容易让新手引入误区.
int i=0x87654321 ;
        int *p=&i;
        *p=0xabcde1 ;

00D0101E    C745 F8 2143658>        mov dword ptr ss:,0x87654321       ;; int i=0x87654321;
00D01025    8D45 F8                 lea eax,dword ptr ss:                                 ;;eax =&i    ;   暂存变量 i 的地址
00D01028    8945 F4                 mov dword ptr ss:,eax                                 ;;p=eax=&i    ; 指针的右值 指向 变量地址
00D0102B    8B4D F4                 mov ecx,dword ptr ss:                                 ;;ecx=p         ;   暂存指针指向的地址
00D0102E    C701 E1CDAB00          mov dword ptr ds:,0xABCDE1                 ;;*p=0xABCD1 ; 在指针指向的地址中赋值


若能对新手有些许的帮助,我就很开心了.学习指针的过程中,云山雾绕的感觉,真是嘘嘘不已.
若有不对的地方,还请大家指教.

仰望天上的光 发表于 2013-7-4 14:11:21

图画得很认真,有个地方写错了,(int*)*x=NULL;应该改为int**x=NULL;或int*(*x)=NULL;或int(**x)=NULL;

坦_然 发表于 2013-7-4 17:21:33

仰望天上的光 发表于 2013-7-4 14:11 static/image/common/back.gif
图画得很认真,有个地方写错了,(int*)*x=NULL;应该改为int**x=NULL;或int*(*x)=NULL;或int(**x)=NULL;

恩,是的. 只是想 让新人明白, 指针 指向的是int * 的 指针. 谢谢你的回复.

qiusuo 发表于 2013-7-4 17:58:36

确实难懂lea是传址 mov是赋值吗

Cocol 发表于 2013-7-4 20:26:17

再看看,温故而知新

yanjianlan 发表于 2013-7-4 20:38:51

很透彻,学习了

#justdo 发表于 2013-7-4 20:51:33

新手学习下哈,呵呵

BILL-BILL 发表于 2013-7-4 21:20:28

支持下.............

小小小菜菜菜 发表于 2018-12-20 15:44:00

支持下.....

1809228982 发表于 2018-12-21 11:42:07

感谢分享,,表示在学到指针的时候>>>我是谁??我在哪??{:10_245:}

X用户 发表于 2018-12-21 16:36:36

感谢

扩展阅读 发表于 2018-12-24 13:41:43

学习学习

大显666 发表于 2019-1-12 21:55:44

这个挺棒

心驰神往 发表于 2020-11-4 09:13:17

谢谢

hornwong 发表于 2021-6-29 20:20:17

感谢分享!

1835575828 发表于 2021-7-4 15:27:24

sunwenwu123 发表于 2021-7-5 10:13:28

学习了

sunwenwu 发表于 2021-7-5 10:18:07

{:10_281:}

hornwong 发表于 2021-7-5 16:34:56

感谢分享!

ridiculum 发表于 2021-7-13 19:41:17

感谢大佬分享
页: [1] 2 3
查看完整版本: 指针和地址,配图.望对新人有帮助