C/C++Öеĺ¯Êý²ÎÊý´«µÝ»úÖÆ(×ªÔØ)
Ò»¡¢ º¯Êý²ÎÊý´«µÝ»úÖÆµÄ»ù±¾ÀíÂÛ ¡¡¡¡º¯Êý²ÎÊý´«µÝ»úÖÆÎÊÌâÔÚ±¾ÖÊÉÏÊǵ÷Óú¯Êý£¨¹ý³Ì£©ºÍ±»µ÷Óú¯Êý£¨¹ý³Ì£©ÔÚµ÷Ó÷¢Éúʱ½øÐÐͨÐŵķ½·¨ÎÊÌâ¡£»ù±¾µÄ²ÎÊý´«µÝ»úÖÆÓÐÁ½ÖÖ£ºÖµ´«µÝºÍÒýÓô«µÝ¡£ÒÔÏÂÌÖÂ۳Ƶ÷ÓÃÆäËûº¯ÊýµÄº¯ÊýΪÖ÷µ÷º¯Êý£¬±»µ÷Óõĺ¯ÊýΪ±»µ÷º¯Êý¡£¡¡¡¡Öµ´«µÝ£¨passl-by-value£©¹ý³ÌÖУ¬±»µ÷º¯ÊýµÄÐÎʽ²ÎÊý×÷Ϊ±»µ÷º¯ÊýµÄ¾Ö²¿±äÁ¿´¦Àí£¬¼´ÔÚ¶ÑÕ»Öпª±ÙÁËÄÚ´æ¿Õ¼äÒÔ´æ·ÅÓÉÖ÷µ÷º¯Êý·Å½øÀ´µÄʵ²ÎµÄÖµ£¬´Ó¶ø³ÉΪÁËʵ²ÎµÄÒ»¸ö¸±±¾¡£Öµ´«µÝµÄÌØµãÊDZ»µ÷º¯Êý¶ÔÐÎʽ²ÎÊýµÄÈκβÙ×÷¶¼ÊÇ×÷Ϊ¾Ö²¿±äÁ¿½øÐУ¬²»»áÓ°ÏìÖ÷µ÷º¯ÊýµÄʵ²Î±äÁ¿µÄÖµ¡£¡¡¡¡ÒýÓô«µÝ(pass-by-reference)¹ý³ÌÖУ¬±»µ÷º¯ÊýµÄÐÎʽ²ÎÊýËäȻҲ×÷Ϊ¾Ö²¿±äÁ¿ÔÚ¶ÑÕ»Öпª±ÙÁËÄÚ´æ¿Õ¼ä£¬µ«ÊÇÕâʱ´æ·ÅµÄÊÇÓÉÖ÷µ÷º¯Êý·Å½øÀ´µÄʵ²Î±äÁ¿µÄµØÖ·¡£±»µ÷º¯Êý¶ÔÐβεÄÈκβÙ×÷¶¼±»´¦Àí³É¼ä½ÓѰַ£¬¼´Í¨¹ý¶ÑÕ»Öдæ·ÅµÄµØÖ··ÃÎÊÖ÷µ÷º¯ÊýÖеÄʵ²Î±äÁ¿¡£ÕýÒòΪÈç´Ë£¬±»µ÷º¯Êý¶ÔÐβÎ×öµÄÈκβÙ×÷¶¼Ó°ÏìÁËÖ÷µ÷º¯ÊýÖеÄʵ²Î±äÁ¿¡£
¶þ¡¢ CÓïÑÔÖеĺ¯Êý²ÎÊý´«µÝ»úÖÆ ¡¡¡¡ÔÚCÓïÑÔÖУ¬Öµ´«µÝÊÇΨһ¿ÉÓõIJÎÊý´«µÝ»úÖÆ¡£µ«ÊǾݱÊÕßËùÖª£¬ÓÉÓÚÊÜÖ¸Õë±äÁ¿×÷Ϊº¯Êý²ÎÊýµÄÓ°Ï죬ÓÐÐí¶àÅóÓÑ»¹ÈÏΪÕâÖÖÇé¿öÊÇÒýÓô«µÝ¡£ÕâÊÇ´íÎóµÄ¡£Çë¿´ÏÂÃæµÄ´úÂ룺 int swap(int *x, int *y) { int temp; temp = *x; *x = *y; *y = temp; return temp; } void main() { int a = 1, b = 2; int *p1 = &a; int *p2 = &b; swap(p1, p2) } ¡¡¡¡º¯ÊýswapÒÔÁ½¸öÖ¸Õë±äÁ¿×÷Ϊ²ÎÊý£¬µ±main()µ÷ÓÃswapʱ£¬ÊÇÒÔÖµ´«µÝµÄ·½Ê½½«Ö¸Õë±äÁ¿p1¡¢p2µÄÖµ£¨Ò²¾ÍÊDZäÁ¿a¡¢bµÄµØÖ·£©·ÅÔÚÁËswapÔÚ¶ÑÕ»ÖÐΪÐÎʽ²ÎÊýx¡¢y¿ª±ÙµÄÄÚ´æµ¥ÔªÖС£ÕâÒ»µã´ÓÒÔϵĻã±à´úÂë¿ÉÒÔ¿´³ö£¨×¢ÊÍÊDZÊÕ߼ӵģ©£º 22: void main() 23: { …… …… 13: int a = 1, b = 2; 00401088 mov dword ptr [ebp-4],1 0040108F mov dword ptr [ebp-8],2 14: int *p1 = &a; 00401096 lea eax,[ebp-4] 00401099 mov dword ptr [ebp-0Ch],eax 15: int *p2 = &b; 0040109C lea ecx,[ebp-8] 0040109F mov dword ptr [ebp-10h],ecx 16: swap(p1, p2); 004010A2 mov edx,dword ptr [ebp-10h] £»²ÎÊýp2µÄÖµ½øÕ» 004010A5 push edx 004010A6 mov eax,dword ptr [ebp-0Ch] £»²ÎÊýp1µÄÖµ½øÕ» 004010A9 push eax 004010AA call @ILT+15(swap) (00401014) £»µ÷ÓÃswapº¯Êý 004010AF add esp,8 £»ÇåÀí¶ÑÕ»ÖеIJÎÊý 17: } ¡¡¡¡ÔĶÁÉÏÊö´úÂëҪעÒ⣬INTEL8
Ïà¹ØÎĵµ£º
ÕâһϵÁÐÎÄÕÂÊÇÎÒ¹¹½¨C/C++²å¼þ¿ª·¢¿ò¼Ü¿ª·Å¿ò¼ÜµÄ¹ý³Ì¡£ºóÃæ»áÒ»Ö±¸üУ¬Ö±ÖÁ¹¹½¨Íê³É¡£
¡¶¹¹½¨×Ô¼ºµÄC/C++²å¼þ¿ª·¢¿ò¼Ü£¨Ò»£©——³õ²½ÉèÏë¡·
¡¶¹¹½¨×Ô¼ºµÄC/C++²å¼þ¿ª·¢¿ò¼Ü£¨¶þ£©——×ÜÌ幦ÄÜ¡·
¡¶
¹¹½¨×Ô¼ºµÄC/C++²å¼þ¿ª·¢¿ò¼Ü£¨Èý£©——×ÜÌå½á¹¹
¡·
¡¶¹¹½¨×Ô¼ºµÄC/C++²å¼þ¿ª·¢¿ò¼ ......
1.ÒýÑÔ
¡¡¡¡C++ÓïÑԵĴ´½¨³õÖÔÊÇ“a better C”£¬µ«ÊÇÕâ²¢²»Òâζ×ÅC++ÖÐÀàËÆCÓïÑÔµÄÈ«¾Ö±äÁ¿ºÍº¯ÊýËù²ÉÓõıàÒëºÍÁ¬½Ó·½Ê½ÓëCÓïÑÔÍêÈ«Ïàͬ¡£×÷ΪһÖÖÓûÓëC¼æÈݵÄÓïÑÔ£¬C++±£ÁôÁËÒ»²¿·Ö¹ý³ÌʽÓïÑÔµÄÌØµã£¨±»ÊÀÈ˳ÆÎª“²»³¹µ×µØÃæÏò¶ÔÏ󔣩£¬Òò¶øËü¿ÉÒÔ¶¨Òå²»ÊôÓÚÈκÎÀàµÄÈ«¾Ö±äÁ¿ºÍº¯Êý¡£µ«ÊÇ£¬C++±Ï¾ ......
±¾ÎĵÄÄÚÈÝÊÇ Win32 API£¨ÌرðÊǽø³Ì¡¢Ï̺߳͹²ÏíÄÚ´æ·þÎñ£©µ½ POWER ÉÏ Linux µÄÓ³Éä¡£±¾ÎÄ¿ÉÒÔ°ïÖúÄúÈ·¶¨ÄÄÖÖÓ³Éä·þÎñ×îÊʺÏÄúµÄÐèÒª¡£×÷ÕßÏòÄúÏêϸ½éÉÜÁËËûÔÚÒÆÖ² Win32 C/C++ Ó¦ÓóÌÐòʱÓöµ½µÄ API Ó³Éä¡£
¸ÅÊö
Óкܶ෽ʽ¿ÉÒÔ½« Win32 C/C++ Ó¦ÓóÌÐòÒÆÖ²ºÍÇ¨ÒÆµ½ pSeries ƽ̨¡£Äú¿ÉÒÔʹÓÃÃâ·ÑÈí¼þ»òÕßµÚÈý·½¹¤¾ßÀ´ ......
ÒÔÇ°Ôø¾×ܽá¹ýһƪ(http://www.cppblog.com/franksunny/archive/2007/11/29/37510.html
)£¬¹ØÓÚÔÚ
C
ÖÐÈçºÎµ÷ÓÃ
C++
µÄ´úÂ룬µ±Ê±²¢Î´×öÍêÈ«µÄÕ¹¿ª£¬Ö»ÊǼòµ¥µÄ×öÁËϵ÷ÊÔ£¬×î½ü¿´µ½Ò»¸öÌâĿҪÇóʵÏÖ
C
ºÍ
C++
ÖдúÂëµÄ»¥Ïàµ÷Óã¬Æä½á¹ûËäÈ»¶¼ÊÇͨ¹ý
extern “C”
À´ÊµÏÖ
£¬µ«ÊǾßÌ廹ÊÇÓÐЩ²î±ðµÄ¡ ......
- ҪʹÓöÏÑÔ¶Ôº¯Êý²ÎÊý½øÐÐÈ·ÈÏ
- ΪÁ˲»±ØÒªµÄ¿ªÏú£¬¿ÉÒÔ½öʹÓöÏÑÔ£¬¶ø²»Òªreturn
ÍøÉÏÓÐÈËдµÄstrcpy´úÂ룬×öÁËÌ«¶àµÄ³ö´í´¦Àí£¬µ¼ÖÂÐÔÄܵÍÏ£¬Æäʵû±ØÒª£¬ÓÃassert¾ÍÐÐÁË£¬ÕâÑùÔÚdebugģʽÏÂÄܲ¶×½´íÎó£¬releaseÏÂÓÖ²»Ó°ÏìÐÔÄÜ¡£
- ÊéÉÏÌṩµÄmemcpyµÄ·¶Àý
void memcpy(void* pvT ......