Óûã±àµÄÑ۹⿴C++£¨Ö®Ö¸Õ룩

·¢±íÓÚ£º2012-5-15 09:35

×ÖÌ壺´ó ÖРС | ÉÏһƪ | ÏÂһƪ | ÎÒҪͶ¸å

 ×÷Õߣºfeixiaoxing    À´Ô´£º51TestingÈí¼þ²âÊÔÍø²É±à

·ÖÏí£º

¡¡¡¡Ö¸ÕëÊÇÒ»ÖÖ±£´æµØÖ·µÄÊý¾ÝÀàÐÍ£¬ÄÇôָÕëµÄÖ¸ÕëÒ²ÊÇÒ»ÖÖµØÖ·Êý¾Ý£¬±£´æµÄÒ²ÊǵØÖ·¡£ÒÔ´ËÀàÍÆ£¬Ö¸ÕëµÄÖ¸ÕëµÄÖ¸ÕëÄØ¡£¡£¡£¡£¡£¡£ÉÏÃæµÄ´úÂëÒѾ­Çå³þµØ˵Ã÷ÁËÕâÒ»µã¡£ËäÈ»pp¡¢ppp¡¢pppp×ÔÉíµÄÒâÒåÓÐËù²î±ð£¬µ«ÊÇËûÃDZ£´æµÄÊý¾ÝÈ´ºÜ¼òµ¥£¬Ò²¾ÍÊǶÑÕ»µÄµØÖ·¡£pppp->ppp->pp->p£¬´ó¼ÒÈç¹û¿´¶®ÁËÕâ¸ö¹Øϵ£¬¾Í²»»á¾õµÃÖ¸ÕëºÜ¸´ÔÓÁË¡£Èç¹û»¹ÊDz»ÉõÁËÁË£¬¿ÉÒÔ°ÑÖ¸ÕëÄÚÈݺÍÖ¸ÕëµØÖ··Ö±ð´òÓ¡³öÀ´£¬¾Í»á·¢ÏÖËûÃǵÄÇø±ðÁË¡£ÏÂÃæ¾ÍÊÇ´òÓ¡µÄ½á¹û£º

p = 0xa£¬ &p = 0x12ff20
pp = 0x12ff20£¬ &pp = 0x12ff1C
ppp = 0x12ff1C£¬ &ppp = 0x12ff18
pppp = 0x12ff18£¬ &pppp = 0x12ff14

¡¡¡¡£¨4£©Ö¸ÕëºÍÒýÓÃ

¡¡¡¡ÒýÓÃÊÇC++ºÍÓïÑÔµÄÇø±ðÖ®Ò»¡£Æäʵ±¾ÖÊÉÏ˵Á½ÕßÊÇÒ»Öµġ£ÅóÓÑÃÇ¿ÉÒÔ¿´ÏÂÃæÁ½¶Î´úÂë¡£

¡¡¡¡a£©Ö¸ÕëºÍÖ¸ÕëµÄº¯Êý´úÂë

void add_point(int* q)
{
 (*q)++;
}

void add_ref(int& q)
{
 q++;
}

¡¡¡¡b£©º¯ÊýµÄµ÷ÓôúÂë

56:       int m = 10;
004012E8   mov         dword ptr [ebp-4],0Ah
57:       add_point(&m);
004012EF   lea         eax,[ebp-4]
004012F2   push        eax
004012F3   call        @ILT+45(process) (00401032)
004012F8   add         esp,4
58:       add_ref(m);
004012FB   lea         ecx,[ebp-4]
004012FE   push        ecx
004012FF   call        @ILT+50(add_ref) (00401037)
00401304   add         esp,4
59:       return 1;
00401307   mov         eax,1
60:   }

¡¡¡¡·ÖÎöһϣ¬ÎÒÃÇ·¢ÏÖÆäʵº¯Êýadd_pointºÍº¯Êýadd_refʵÏֵŦÄÜ£¬¶¼ÊǶÔÊäÈëµÄÊý¾Ý½øÐÐ×ÔÔö´¦Àí¡£Ö»²»¹ý´¦ÀíµÄʱºò£¬Ò»¸öº¯ÊýµÄÈë²ÎÊÇÖ¸Õ룬һ¸öº¯ÊýµÄÈë²ÎÊÇÒýÓá£ÔÚº¯Êýµ÷Óõĵط½£¬´ó¼Ò¿ÉÒÔ·¢ÏÖÖ¸ÕëºÍÒýÓþÓÈ»ÊÇÒ»ÑùµÄ¡£Ê×ÏÈ¿´add_point£¬µÚÒ»¾ä»ñÈ¡mµÄµØÖ·¸´ÖƸøeax£¬µÚ¶þ¾äѹջ´¦Àí£¬µÚÈý¾äµ÷Óú¯Êýadd_point£¬µÚËľä³öÕ»»ØËÝ¡£Í¬Ñù¿´Ò»ÏÂadd_ref£¬µÚÒ»¾ä»ñÈ¡mµÄµØÖ·¸´ÖƸøecx£¬µÚ¶þ¾äecxѹջ´¦Àí£¬µÚÈý¾äµ÷Óú¯Êýadd_ref£¬µÚËľä¶ÑÕ»»ØËÝ´¦Àí¡£ÏàÐÅ¿´µ½ÕâÀ´ó¼Ò¾ÍÃ÷°×C++µÄÇ°±²ÃÇΪʲô¹ÄÀø´ó¼Ò¶à¶àʹÓÃÒýÓÃÁË¡£

¡¡¡¡£¨5£©Ö¸ÕëºÍ½á¹¹Ìå

¡¡¡¡ÎÒÃÇÔÚѧϰÊý¾Ý½ÚµãµÄʱºò£¬ÏàÐÅ´ó¼Ò¶¼Ñ§Ï°¹ýÕâÑùµÄÒ»¸öÊý¾Ý½á¹¹¶¨Ò壺

typedef struct _NODE
{
 int data;
 struct _NODE* next;
}NODE;

¡¡¡¡µ±Ê±£¬ÎÒÃǶ¼²»Ã÷°×Õâ¸ö½á¹¹ÌåÊÇʲôÒâ˼£¿ÆäʵÕâ¸ö¶¨ÒåÍêÈ«Ð޸ijÉÕâÑù£º

typedef struct _NODE
{
 int data;
 void* next;
}NODE;

¡¡¡¡ÕâÁ½¸öÊý¾Ý½á¹¹ÌåÆäʵÊÇÍêÈ«Ò»Öµġ£µÚÒ»¸öÊý¾Ý±£´æÊý¾Ý£¬µÚ¶þ¸öÊý¾ÝΪָÕ룬ÄÚÈÝΪijһ¸öÊý¾ÝÀàÐ͵ĵØÖ·¡£ÕâÖÖÈ·¶¨µÄµØÖ·ºÍvoid*ÀàÐ͵ĵØÖ·ÀàÐÍÊÇÒ»ÑùµÄ¡£Ö»²»¹ýÇ°ÃæÒ»ÖÖ¸ü¼ÓÖ±½Ó¡£ºóÃæÒ»ÖÖµØÖ·µÄ¹ÌÈ»·½±ã£¬µ«ÊÇʹÓõÄʱºòÿһ´Î¶¼ÐèÒª½øÐÐת»»£¬ºÜÊÇÂé·³¡£Èç¹û´ó¼Ò¸ÐÐËȤ£¬²»·ÁÊǽÓ×Å¿´ÏÂÃæÒ»µÀÌâÄ¿£º

typedef struct _NODE
{
 struct _NODE* next;
}NODE;

32/3<123>
¼ÛÖµ398ÔªµÄ²âÊԿγÌÃâ·ÑÔùËÍ£¬ÌîÎʾíÁìÈ¡°É£¡

¹Ø×¢51Testing

ÁªÏµÎÒÃÇ

¿ì½ÝÃæ°å Õ¾µãµØͼ ÁªÏµÎÒÃÇ ¹ã¸æ·þÎñ ¹ØÓÚÎÒÃÇ Õ¾³¤Í³¼Æ

·¨ÂɹËÎÊ£ºÉϺ£äîϪÂÉʦÊÂÎñËù ÏîÆåÂÉʦ
°æȨËùÓÐ ÉϺ£²©Îª·åÈí¼þ¼¼Êõ¹É·ÝÓÐÏÞ¹«Ë¾ Copyright©51testing.com 2003-2022
ͶËß¼°Òâ¼û·´À¡£ºwebmaster@51testing.com; ÒµÎñÁªÏµ£ºservice@51testing.com 021-64471599-8017

»¦ICP±¸05003035ºÅ

»¦¹«Íø°²±¸ 31010102002173ºÅ