Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

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


Ïà¹ØÎĵµ£º

extern "C"µ×²ãÔ­Àí

ͨ³££¬ÔÚCÓïÑÔµÄÍ·ÎļþÖо­³£¿ÉÒÔ¿´µ½ÀàËÆÏÂÃæÕâÖÖÐÎʽµÄ´úÂ룺
#ifdef __cplusplus
extern "C" {
#endif
/**** some declaration or so *****/
#ifdef __cplusplus
}
#endif /* end of __cplusplus */
ÄÇô£¬ÕâÖÖд·¨Ê²Ã´ÓÃÄØ£¿Êµ¼ÊÉÏ£¬ÕâÊÇΪÁËÈÃCPPÄܹ»ÓëC½Ó¿Ú¶ø²ÉÓõÄÒ»ÖÖÓï·¨ÐÎʽ¡£Ö®ËùÒÔ²ÉÓÃÕâÖÖ·½Ê½ ......

C/C++ÖÐStaticµÄ×÷ÓÃÏêÊö


C/C++ÖÐStaticµÄ×÷ÓÃÏêÊö
 
1.ÏÈÀ´½éÉÜËüµÄµÚÒ»ÌõÒ²ÊÇ×îÖØÒªµÄÒ»Ìõ£ºÒþ²Ø¡£
µ±ÎÒÃÇͬʱ±àÒë¶à¸öÎļþʱ£¬ËùÓÐδ¼Óstaticǰ׺µÄÈ«¾Ö±äÁ¿ºÍº¯Êý¶¼¾ßÓÐÈ«¾Ö¿É¼ûÐÔ¡£ÎªÀí½âÕâ¾ä»°£¬ÎÒ¾ÙÀýÀ´ËµÃ÷¡£ÎÒÃÇҪͬʱ±àÒëÁ½¸öÔ´Îļþ£¬Ò»¸öÊÇa.c£¬ÁíÒ»¸öÊÇmain.c.
ÏÂÃæÊÇa.cµÄÄÚÈÝ£º
char a = 'A'; // global variable
void ......

ÈçºÎÔÚC++Öе÷ÓÃCµÄ´úÂë

ÒÔÇ°Ôø¾­×ܽá¹ýһƪ(http://www.cppblog.com/franksunny/archive/2007/11/29/37510.html
)£¬¹ØÓÚÔÚ
C
ÖÐÈçºÎµ÷ÓÃ
C++
µÄ´úÂ룬µ±Ê±²¢Î´×öÍêÈ«µÄÕ¹¿ª£¬Ö»ÊǼòµ¥µÄ×öÁËϵ÷ÊÔ£¬×î½ü¿´µ½Ò»¸öÌâĿҪÇóʵÏÖ
C
ºÍ
C++
ÖдúÂëµÄ»¥Ïàµ÷Óã¬Æä½á¹ûËäÈ»¶¼ÊÇͨ¹ý
extern “C”
À´ÊµÏÖ
£¬µ«ÊǾßÌ廹ÊÇÓÐЩ²î±ðµÄ¡ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ