ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
¿øº»±Û : http://www.codeproject.com/cpp/pointers.asp Donwload source files - 3kb
¹ø¿ª±Û : DCÀλçÀ̵å ÇÁ·Î±×·¡¹Ö °¶·¯¸®
dcinside ÇÁ°¶ÀÇ Ä¿ÇôÔÀÌ ¹ø¿ªÇÑ°É °¡Áö°í ¿Ô½À´Ï´Ù. ±ÞÇÏ°Ô ¹ø¿ªµÈ°Å¶ó¼ ¼öÁ¤µÉ ºÎºÐÀÌ ¸¹À¸¸®¶ó »ý°¢µË´Ï´Ù. Á¤¸®ÇÏ¸é¼ ÇÊ¿äÇÑ ºÎºÐÀ» ¼öÁ¤ÇØ ³ª°¥ »ý°¢ÀÔ´Ï´Ù. 1 Æ÷ÀÎÅͶõ?
Æ÷ÀÎÅÍ´Â ±âº»ÀûÀ¸·Î ´Ù¸¥ º¯¼ö¿Í µ¿ÀÏÇÑ »õ·Î¿î ŸÀÔÀÇ º¯¼ö´Ù. ´Ù¸¥ º¯¼öµéÀÌ ½Ç µ¥ÀÌÅ͸¦ °¡Áö°í ÀÖ´Â °Í ´ë½Å¿¡ µ¥ÀÌÅͰ¡ ÀúÀåµÈ ¸Þ¸ð¸® °ø°£ÀÇ ÁÖ¼Ò¸¦ °¡Áö°í ÀÖ´Ù´Â Á¡¿¡ ÀÖ¾î¼ Â÷À̰¡ ÀÖ´Ù. µ¥ÀÌÅͰ¡ ÀúÀåµÈ ¸Þ¸ð¸® °ø°£ÀÇ ÁÖ¼Ò, Áï À§Ä¡Á¤º¸¸¦ °¡Áö°í ÀÖ´Ù´Â °ÍÀº ¸Å¿ì ´Ü¼øÇÑ °³³ä°°Áö¸¸, ¸Å¿ì Áß¿äÇÑ °³³äÀ̱⵵ ÇÏ´Ù. C¿Í C++·Î µðÀÚÀÎµÈ ¸µÅ©µå¸®½ºÆ®, Æ®¸® ¿Í °°Àº ÀڷᱸÁ¶µéÀÌ Æ÷ÀÎÅÍ °³³äÀ» ±â¹ÝÀ¸·Î Çϰí ÀÖ´Ù. Perl, Java¿Í°°ÀÌ Æ÷ÀÎÅÍ ´ë½Å ·¹ÆÛ·±½º °³³äÀ» °¡Áø ¾ð¾îµéÀ̶ó ÇÒÁö¶óµµ ±âº»°³³ä¿¡ ÀÖ¾î¼ Æ÷ÀÎÅÍ¿Í º° Â÷À̰¡ ¾øÀ½À» ¾Ë ¼ö ÀÖ´Ù.
(¿ªÁÖ: Æ÷ÀÎÅÍ¿¡ ´ëÇØ¼ Á»´õ ½¬¿î ¼öÁØ¿¡¼ Á¢±ÙÇÏ±æ ¿øÇÑ´Ù¸é, Java¿Í ÇÔ²² ÇÏ´Â ÄÄÇ»ÅÍ °úÇÐ 3Àå°ú Spim 1-3Àå, 1-2Àå¹®¼¸¦ Âü°íÇϱ⠹ٶõ´Ù. ÀÌµé ¹®¼¸¦ °¡º±°Ô Àд Á¤µµ·Î Æ÷ÀÎÅÍÀÇ °³³äÀ» Àâ±â°¡ ÇÑÃþ ¼ö¿ùÇØ Áú °ÍÀÌ´Ù.)
1.1 ½ÃÀÛ
¾î¶»°Ô Æ÷ÀÎÅ͸¦ Á¤ÀÇÇÒ¼ö ÀÖ³ª. ¿¹¸¦µé¾îº¸ÀÚ, ¾Æ·¡ÀÇ µÎ°³´Â µÑ´Ù intÇü Æ÷ÀÎÅÍ Æ÷ÀÎÅ͸¦ ¸¸µé¾îÁØ´Ù : int* pNumberOne; int* pNumberTwo;µÎ º¯¼öÀÇ À̸§À» º¸¸é ¾Õ¿¡ °øÅëÀûÀ¸·Î ¹®ÀÚp°¡ ºÙ¾îÀÖ´Â°É ¾Ë ¼ö ÀÖ´Ù. ÀÌ°Ç ÀÌ º¯¼ö°¡ pointer ÇüÀ̶ó´Â °ÍÀ» ´Ù¸¥ °³¹ßÀÚ°¡ ½±°Ô ÀÎÁöÇÒ ¼ö ÀÖµµ·Ï Çϱâ À§ÇÑ ÀÏÁ¾ÀÇ Ç³½ÀÀÌ´Ù. ¹Ýµå½Ã ÀÌ ±ÔÄ¢À» µû¸¦ ÇÊ¿ä´Â ¾ø´Ù. p_¸¦ ºÙ¿©µµ µÇ°í P¸¦ ºÙ¿©µµ µÉ°ÍÀÌ´Ù. ¾î¶µç Ç¥ÁØÀûÀÎ ·êÀ» ¸¸µé¾î¼ »ç¿ëÇÏ¸é µÈ´Ù. ÀÌ´Â ¼Ò½º ÇÁ·Î±×·¥ÀÇ °¡µ¶¼ºÀ» ³ô¿©Áشٴ Á¡¿¡¼ ¸Å¿ì Áß¿äÇÑ ÀÏÀÌ´Ù.
À§ ¼±¾ð¿¡¼ Æ÷ÀÎÅÍ º¯¼öÀÓÀ» ¾Ë·ÁÁÖ±â À§Çؼ *°¡ »ç¿ëµÇ°í ÀÖÀ½À» ¾Ë ¼ö ÀÖ´Ù.
ÀÌÁ¦, ¸¸µé¾îÁø Æ÷ÀÎÅÍ·Î ¹«¾ð°¡¸¦ ÇØº¸ÀÚ : pNumberOne = &some_number; pNumberTwo = &some_other_number;&±âÈ£´Â 'the address of' ¶ó°í ÀÐÀ» ¼ö ÀÖ´Ù. ±×¸®°í º¯¼öÀÚ½ÅÀ» ´ë½ÅÇØ ¸Þ¸ð¸® ÁÖ¼Ò¸¦ µÇµ¹·ÁÁØ´Ù. Áï À§ÀÇ ÄÚµå´Â some_numberÀÇ ¸Þ¸ð¸® ÁÖ¼Ò¸¦ pNumberOne¿¡ ´ëÀÔ(ȤÀº ÀúÀå)Çϰڴٴ Àǹ̰¡ µÈ´Ù. pNumberOne¿¡´Â some_numberÀÇ ÁÖ¼Ò°¡ µé¾î ÀÖ´Â °ÍÀÌ´Ù.
¸¸¾à ¿ì¸®°¡ some_numberÀÇ ÁÖ¼Ò¸¦ ÂüÁ¶Çؼ °ªÀ» ÀоîµéÀ̰ųª º¯°æÇÏ±æ ¿øÇÑ´Ù¸é pNumberOneÀ» ÀÌ¿ëÇÏ¸é µÈ´Ù. pNumberOneÀº some_numberÀÇ ÁÖ¼Ò¸¦ °¡¸®Å°°í Àֱ⠶§¹®ÀÌ´Ù. ¸¸¾à pNumberOneÀ¸·ÎºÎÅÍ some_numberÀÇ °ª (Value)Áï ÁÖ¼Ò°¡ °¡¸®Å°°í ÀÖ´Â ¸Þ¸ð¸®¿¡ ÀúÀåµÈ °ªÀ» ÂüÁ¶Çϱ⠿øÇÑ´Ù¸é *¸¦ ÀÌ¿ëÇØ¼ *pNumberOneÀ¸·Î »ç¿ëÇÏ¸é µÈ´Ù. 1.2 ¹è¿î°É È®ÀÎÇØ º¸ÀÚ
¸¸¾à ¾ÕÀÇ ³»¿ëÀ» ÀÌÇØÇÏÁö ¸øÇß´Ù¸é, Æ÷±âÇϱâ Àü¿¡ ÀÌ ¿¹Á¦¸¦ Àо±â¸¦ ÃßõÇÑ´Ù. ¹ØÀÇ Äڵ带 º¸¸é Æ÷ÀÎÅ͸¦ Á»´õ ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. #include <stdio.h> void main() { // º¯¼öÀÇ ¼±¾ð int nNumber; int *pPointer; // ÀÌÁ¦, º¯¼ö¸¦ ´ëÀÔÇÑ´Ù nNumber = 15; pPointer = &nNumber; // nNumber·ÎºÎÅÍ º¯¼ö¸¦ Ãâ·ÂÇØÁØ´Ù: printf("nNumber is equal to : %dn", nNumber); // ÀÌÁ¦, pPointer¸¦ ÅëÇØ nNumber¸¦ ¹Ù²ãº¸ÀÚ: *pPointer = 25; // À§ ¸í·ÉÀ¸·Î ÀÎÇØ nNumber°¡ º¯°æÀÇ °á°ú¸¦ Áõ¸íÇϱâÀ§ÇØ // º¯¼ö¸¦ ´Ù½Ã Ãâ·ÂÇÑ´Ù: printf("nNumber is equal to : %dn", nNumber); }À§ÀÇ Äڵ带 »ý°¢Çϸé Àо°í, °ªÀ» ¹Ì¸®¿¹ÃøÇÑ ÈÄ ÄÄÆÄÀÏ ÇØ¼ ½ÇÇà½ÃÄÑ º¸µµ·Ï ÇÏÀÚ. ¿¹ÃøÇÑ´ë·Î °ªÀÌ ³ª¿ÀÁö ¾ÊÀº´Ù¸é, Äڵ带 ÀÌÇØÇÏ°í ¿¹ÃøÀÌ °¡´ÉÇÒ ¶§±îÁö, °è¼Ó ÀÐ°í °è¼Ó ½ÇÇàÇØ º¸±â ¹Ù¶õ´Ù. 1.3 ÇÔÁ¤!
¾Æ·¡ÀÇ Äڵ忡´Â ¹®Á¦°¡ ¼û¾î ÀÖ´Ù. ã¾Æº¸ÀÚ. #include <stdio.h> int *pPointer; void SomeFunction(); { int nNumber; nNumber = 25; // pPointer Æ÷ÀÎÅÍ¿¡ nNumberÀ» ¸¸µé¾îÁØ´Ù: pPointer = &nNumber; } void main() { SomeFunction(); // pPointer ÁÖ¼Ò¿¡ ¹«¾ð°¡ ¸¸µé¾îÁØ´Ù // ¿Ö ½ÇÆÐÇϴ°¡!? printf("Value of *pPointer: %dn", *pPointer); }
À§ ÇÁ·Î±×·¥Àº À߸øµÈ ÇÁ·Î±×·¥À¸·Î, ²Ï³ª ½É°¢ÇÑ ¹®Á¦¸¦ °¡Áö°í ÀÖ´Ù. ÁÖ¼®¿¡´Â ½ÇÆÐÇÑ´Ù°í ¸»Çϰí ÀÖÁö¸¸ ¸¹Àº °æ¿ì 'Á¦´ë·Î ÀÛµ¿µÇ´Â °Í󷳺¸À̱⠶§¹®ÀÌ´Ù. ¿©Æ° À§ ÇÁ·Î±×·¥Àº °áÁ¤ÀûÀÎ ¹®Á¦°¡ ÀÖ´Ù.
ÇÁ·Î±×·¥Àº SomeFunctionÇÔ¼ö¸¦ È£ÃâÇϰí, nNumberº¯¼ö¸¦ »ý¼ºÇÑÈÄ¿¡ pPointer ¿¡ ´ëÀÔÇÑ´Ù. ÀÌÁ¦ pPointerÀº nNumberÀÇ ÁÖ¼Ò¸¦ °¡¸®Å°°Ô µÉ °ÍÀÌ´Ù. ÇÏÁö¸¸ nNumberÀº Áö¿ªº¯¼öÀ̱⠶§¹®¿¡ ÇÔ¼ö¸¦ ºüÁ®³ª°¥ ¶§ »ç¶óÁø´Ù´Â ¹®Á¦Á¡ÀÌ ÀÖ´Ù.
Áö¿ªº¯¼ö´Â Ç×»ó ¼±¾ðÇÑ ±× ºí·°¿¡¼ ÀÌ¿ëµÇ°í ºüÁ®³ª°¥¶§ Áö¿öÁø´Ù. ÀÌ °ÍÀº ¸Å¿ì Áß¿äÇÑ °³³äÀε¥, À̰ÍÀ» ÀÌÇØÇÏ·Á¸é, ÇÁ·Î¼¼½º°¡ ¸í·ÉÀ» ¾î¶»°Ô ½ºÅÿ¡ À¯ÁöÇÏ´ÂÁö¿¡ ´ëÇÑ °ÍÀ» ¾Ë°í ÀÖ¾î¾ß ÇÑ´Ù. ÀÌ¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀ» ¾Ë±â¸¦ ¿øÇÑ´Ù¸é ¾î¼Àºí¸® ÇÁ·Î±×·¡¹Ö - ÇÔ¼öÆíÀ» ÀÐ¾î º¸±â ¹Ù¶õ´Ù. ±»ÀÌ ±íÀÌ ¾Ë°í ½ÍÁö ¾Ê´Ù¸é, ¿ì¼±Àº Áö¿ªº¯¼ö´Â ÇØ´ç ÇÔ¼ö¿¡¼¸¸ À¯È¿ÇÏ´Ù´Â °ÍÀ» ÀÎÁöÇÏ´Â ¼öÁØ¿¡¼ ³Ñ¾î°¡µµ·Ï ÇÑ´Ù.
ÀÌÁ¦ ¹®Á¦¸¦ ¾Ë¾ÒÀ¸´Ï ¹®Á¦¸¦ Ç®¾î¾ß ÇÒ°ÍÀÌ´Ù. ÀÌ ¹®Á¦¸¦ Ç®±â À§Çؼ´Â ¸Þ¸ð¸® ÇÒ´ç°ú °ü·ÃµÈ ±â¼úÀ» ¾Ë°í ÀÖ¾î¾ß ÇÑ´Ù. 1.4 µ¿Àû ÇÒ´ç
µ¿Àû ÇÒ´çÀº Æ÷ÀÎÅ͸¦ »ç¿ëÇÔÀ¸·Î½á ¹ß»ýÇÏ´Â ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇÑ Áß¿äÇÑ °³³äÀ̸ç, Æ÷ÀÎÅÍ¿Í ÇÔ²² Çʼö·Î »ç¿ëµÈ´Ù.
µ¿Àû ÇÒ´çÀº µ¿Àû_¸Þ¸ð¸®_ÇÒ´çÀÇ ÁÙÀÓ¸»ÀÌ´Ù. Áï »ç¿ë°¡´ÉÇÑ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ´Â ±â¼úÀ̶ó°í º¸¸é µÈ´Ù. »ç¿ë°¡´ÉÇÑ ¸Þ¸ð¸®¸¦ °ø°£À» ÇÒ´ç ¹Þ¾Ò´Ù¸é, µµ´ëü ±× ¸Þ¸ð¸® °ø°£ÀÌ ¾îµð¿¡ ÀÖ´ÂÁö¿¡ ´ëÇÑ Á¤º¸¸¦ ¾Ë°í ÀÖ¾î¾ß ÇÒ°ÍÀÌ´Ù. ´ç½ÅÀÇ ÄÄÇ»ÅͰ¡ 1GÀÇ ¸Þ¸ð¸®¸¦ °¡Áö°í ÀÖ°í, ¿©±â¿¡¼ 1¸Þ°¡ÀÇ °ø°£À» µ¿ÀûÀ¸·Î ÇÒ´ç¹Þ¾Ò´Ù¸é, ±× 1¸Þ°¡ÀÇ °ø°£ÀÌ 1GÀÇ °ø°£Áß ¾îµð¿¡ ÀÖ´ÂÁö¸¦ ¾Ë¾Æ¾ß »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀÌ´Ù. ´ÙÇàÈ÷ ¿ì¸®´Â ¸Þ¸ð¸®°¡ ÇÒ´çµÈ °÷ÀÇ ½ÃÀÛÁÖ¼Ò¸¦ ¾Ë ¼ö ÀÖÀ¸¸ç, ÀÌ ÁÖ¼Ò¸¦ »ç¿ëÇϱâ À§ÇÑ Æ÷ÀÎÅ͵µ ¾Ë°í ÀÖ´Ù.
ºñ·Ï °³³äÀÌ ¸¹ÀÌ ÇÞ°¥¸±¼öÀÖ°ÙÁö¸¸ , ¸Å¿ì °£´ÜÇÏ´Ù. ¾Æ·¡ÄÚµå´Â integer ¸Þ¸ð¸®¸¦ ÇÒ´çÇϴ°ÍÀ» º¸¿©ÁØ´Ù. int *pNumber; pNumber = (int *)malloc(1000*sizeof(int));
int *pNumber; pNumber = new pNumber(1000);
¾Æ·¡´Â double¹öÁ¯ÀÇ ¸Þ¸ð¸® ÇÒ´ç ÄÚµå´Ù. double *pDouble; pDouble = new double;
À̽ÄÀº °°ÀºÇü½ÄÀÌ´Ù, // ÇØ¼® ¹Ù¶÷ -> so you can't really fail with this bit.
µ¿ÀûÇÒ´çÀÌ ¼±¾ðµÈ Áö¿ª º¯¼öµé°ú ´Ù¸¥°Ç, ¾Æ¹«¸® ÇÔ¼ö¿¡¼ ºüÁ®³ª¿À°Å³ª( return ÇÏ¿´À» °æ¿ì ), ¼±¾ðÇÑ ºí·°À» ºüÁ®³ª¿Ã¶§( {} Scope ¸¦ ¹þ¾î³µÀ» °æ¿ì )¿¡µµ ÇÒ´çÇÑ ¸Þ¸ð¸®°¡ Áö¿öÁöÁö ¾Ê´Â´Ù´Â°ÍÀÌ´Ù. ±×·¡¼ ¸¸¾à µ¿ÀûÇÒ´çÀ» ÀÌ¿ëÇØ ÀÌ ¿¹Á¦¸¦ ´Ù½Ã ¾µ·Á°í ÇÑ´Ù¸é, ´ÙÀ½°ú°°ÀÌ ÀÛ¼ºÇÒ¼öÀÖ´Ù. #include <stdio.h> int *pPointer; void SomeFunction() { // pPointer Æ÷ÀÎÅÍ¿¡ new integer¸¦ ¸¸µç´Ù pPointer = new int; *pPointer = 25; } void main() { SomeFunction(); // pPointer Æ÷ÀÎÅÍ¿¡ ¹«¾ð°¡¸¦ ¸¸µé¾îÁØ´Ù printf("Value of *pPointer: %dn", *pPointer); }
»ý°¢ÇÏ¸é¼ Àо°í, ÄÄÆÄÀÏ·¯°¡ ¾î¶»°Ô ÇÒÁö »ý°¢Çغ¸°í, ¿Ö ÀÌ·¸°Ô ³ª¿À´ÂÁö ÀÌÇØÇØ ºÁ¾ß ÇÑ´Ù. SomeFunctionÀÌ È£ÃâµÉ¶§, ¸Þ¸ð¸®¸¦ ÇÒ´çÇϰí pPointer Æ÷ÀÎÅÍ¿¡ ÇÒ´çÇÑ ¸Þ¸ð¸®ÀÇ ÁÖ¼Ò¸¦ ³Ñ±ä´Ù. ÇÔ¼ö°¡ ¸®Åϵɶ§, »õ·Î¿î ¸Þ¸ð¸®´Â ¿ø·¡´ë·Î ³²¾ÆÀÖÀ¸¹Ç·Î pPointer´Â ÀÌ¿ëÇÒ ¼ö ÀÖ°Ô µÇ´Â°ÍÀÌ´Ù. µ¿ÀûÇÒ´çÀº ¹Ù·Î ÀÌ·± °Í ÀÌ´Ù! ¿Ö ÀÌ ÄÚµå´Â ¿¡·¯°¡ ÀϾÁö ¾Ê´ÂÁö »ý°¢ÇغÁ¶ó. 1.5 ¸Þ¸ð¸®ÀÇ ÇÒ´ç°ú ÇØÁ¦
ÀÌ ¹®Á¦´Â ¸Å¿ì ½±°Ô °íÄ¥¼ö ÀÖ´Â ¹®Á¦Àϼöµµ, º¹ÀâÇÒ ¼öµµ ÀÖ´Ù. ±×·¡µµ ¸í½ÉÇØ¾ß ÇÏ´Â °ÍÀº ÀÌ ¹®Á¦´Â ¸Å¿ì Áß¿äÇÏ´Ù ¶ó´Â °ÍÀÌ´Ù. ¿ì¼± »ý°¢ÇغÁ¾ß µÉ ¹®Á¦´Â µ¿ÀûÇÒ´çÀ» ÀÌ¿ëÇÏ¿© ÇÒ´çÇØ³õÀº ¸Þ¸ð¸®¸¦ »ç¿ë ÈÄ¿¡µµ ±×³É ³öµÖ¹ö¸®´Â Á¡ÀÌ´Ù. ÀÌ ÇÒ´çµÈ ¸Þ¸ð¸®´Â ½ÇÁ¦ ÀÚµ¿ÀûÀ¸·Î Á¦°ÅµÇÁö ¾ÊÀ¸¹Ç·Î '¸Þ¸ð¸® ´©¼ö°¡ »ý±â°Ô µÇ´Â °ÍÀÌ´Ù.
½ÉÁö¾î ÇÁ·Î±×·¥ÀÌ ³¡³µÀ»¶§¿¡µµ ÄÄÇ»ÅÍ´Â ¸Þ¸ð¸®´Â ÇÒ´çµÈä·Î ³²±â°Ô µÈ´Ù. ÀÌ ¹®Á¦´Â ÄÄÇ»ÅÍ¿¡°Ô ¸Þ¸ð¸® »ç¿ëÀÌ ³¡³¯¶§ ¾Ë·ÁÁÖÁö ¾Ê´Â´Ù¸é, ´Ù¸¥ ÇÁ·Î±×·¥ÀÌ ÀÌ ¸Þ¸ð¸®¸¦ »ç¿ëÇÒ ¼ö ¾øÀ¸¹Ç·Î ¸Þ¸ð¸®ÀÇ ³¶ºñ°¡ ÀϾ °ÍÀ̰í
¸¸¾à ¸ðµç ¸Þ¸ð¸®¸¦ ½á¹ö¸®°Ô µÇ¸é ½Ã½ºÅÛ Ãæµ¹À» ÀϾ°ÍÀÌ´Ù, ±×·¡¼ À̰ÍÀº ¸Å¿ì Áß¿äÇÑ ¹®Á¦ÀÌ´Ù. ´ÙÀ½Àº ÇÁ·Î±×·¥ÀÌ Á¾·áµÇ¾úÀ»¶§ ¸Þ¸ð¸®¸¦ ÇØÁ¦ÇØÁÖ´Â ¸Å¿ì °£´ÜÇÑ ¿¹Á¦ÀÌ´Ù delete pPointer;
°£´ÜÇØ º¸ÀÌÁö¸¸ À̰ÍÀÌ ÀüºÎ´Ù. ÇÏÁö¸¸ ÇØÁ¦ÇÏ·Á°í ÇÒ ¶§¿¡´Â ÇÒ´çÀ» ÇÑ ½ÃÁ¡¿¡ pPointer º¯¼ö¿¡ È®½ÇÇÑ pointer¸¦ ³Ñ°ÜÁÖ¾ú´ÂÁö üũ¸¦ ÇØ¾ßÇÑ´Ù. ¾²·¹±â °ªÀÌ µé¾îÀÖÀ½À¸·Î ÀÎÇØ À§ÇèÇÒ ¼öµµ ÀÖÁö¸¸, ¸Þ¸ð¸® ÇØÁ¦¸¦ ÇÔÀ¸·Î½á ÇÁ·Î±×·¥Àº º¸´Ù È¿À²ÀûÀÌ°í ¿Ïº®ÇÏ°Ô µÈ´Ù.
Á» ´õ ¹ßÀüÇÏ¿© ¸Þ¸ð¸®¸¦ ³¶ºñÇÏÁö ¾Ê´Â ÄÚµå·Î ÀÛ¼ºµÈ ¿¹Á¦¸¦ ´Ù½Ã º¸ÀÚ. #include <stdio.h> int *pPointer; void SomeFunction() { // pPointer Æ÷ÀÎÅÍ¿¡ new interger ¸¦ ¸¸µé¾îÁØ´Ù pPointer = new int; *pPointer = 25; } void main() { SomeFunction(); // pPointer Æ÷ÀÎÅÍ¿¡ ¹«¾ð°¡¸¦ ¸¸µé¾îÁØ´Ù printf("Value of *pPointer: %dn", *pPointer); delete pPointer; }
Àüü¿¡¼ Ãß°¡µÈ ÁÙÀº ÇÑ ÁÙÀÌÁö¸¸ ÀÌ ÁÙÀº °¡Àå Áß¿äÇÑ ÁÙÀÌ´Ù. ¸¸¾à ¸Þ¸ð¸®¸¦ ÇØÁ¦ÇÏÁö ¾Ê´Â´Ù¸é, '¸Þ¸ð¸® ´©¼öÇö»óÀÌ ÀÏ¾î ³¯ °ÍÀ̰í, ÇÁ·Î±×·¥ÀÌ Á¾·áµÇ±â Àü±îÁö´Â ÀÌ Çö»óÀº ¹Ýº¹ µÉ°ÍÀÌ´Ù. 1.6 ÇÔ¼ö·Î Æ÷ÀÎÅÍ Àü´ÞÇϱâ
Æ÷ÀÎÅ͸¦ ÇÔ¼öÀÎÀÚ·Î Àü´ÞÇÏ´Â ±â¼úÀº ¸Å¿ì À¯¿ëÇϰí, ¸Å¿ì ½±°Ô ¸¶½ºÅÍÇÒ¼öÀÖ´Ù. ¸¸¾à ÇÁ·Î±×·¥¿¡¼ ¼ö¸¦ °¡Á®°¡ 5¸¦ ´õÇÏ°í ½Í´Ù¸é, ¿ì¸®´Â ´ÙÀ½°ú°°ÀÌ ÀÛ¼ºÇÒ¼ö ÀÖÀ»°ÍÀÌ´Ù. #include <stdio.h> void AddFive(int Number) { Number = Number + 5; } void main() { int nMyNumber = 18; printf("My original number is %dn", nMyNumber); AddFive(nMyNumber); printf("My new number is %dn", nMyNumber); }
±×·¯³ª ¹®Á¦´Â ÀÌ Number ÂüÁ¶·Î AddfiveÇÔ¼öÀÇ ÀÎÀÚ·Î nMyNumber¸¦ ³Ñ°ÜÁÙ ¶§, º¯¼ö ±×ÀÚü°¡ ¾Æ´Ï¶ó´Â Á¡¿¡ÀÖ´Ù. ±×·± ±î´ß¿¡ 'Number = Number + 5' ÀÌÁÙÀº º¹»çµÈ º¯¼ö Number¿¡ 5°¡ ´õÇØÁø´Ù, ¿ø·¡ º¯¼ö´Â in main() ¾È¿¡ ³²°ÜµÎ´Ï ¿µÇâÀÌ ¾ø´Ù. ½ÇÇàÀ» ÇØº¸¸é °á°ú°ªÀ» ¾Ë ¼ö ÀÖÀ»°ÍÀÌ´Ù.
ÀÌ·¯ÇÑ ¹®Á¦¸¦ °¡Áö°í ÀÖÀ»¶§¿¡´Â, º¯¼öÀÇ Æ÷ÀÎÅ͸¦ ³Ñ°ÜÁ༠ÇÔ¼ö¿¡¼ ±× ¸Þ¸ð¸®¸¦ °è¼ÓÇÏ¿© ¼öÁ¤ÇÒ ¼ö ÀÖ´Ù. Áï Number °¡ ¾Æ´Ñ Number ÀÇ Æ÷ÀÎÅÍÀÓÀ» »ý°¢Çϰí ÇÔ¼öÀÇ ¿øÇüÀ» ¹Ù²Ù¾î ÁÖ¾î¾ß ÇÑ´Ù. ¹Ù²Ù¾î ÁÖ¾î¾ß ÇÒ Á¡Àº void AddFive(int Number)ÀÌ void AddFive(int* Number) ÀÌ·¸°Ô * ¸¦ ºÙ¿© ¹Ù²Ù¾î Áشٴ °ÍÀÌ´Ù.
ÇÁ·Î±×·¥À» Á¶±Ý ¹Ù²ã ´Ù½Ã ÀÛ¼ºÇغ¸ÀÚ. ±×·³ Number Æ÷ÀÎÅͺ¯¼ö¿¡ nMyNumberÀÇ Æ÷ÀÎÅͰ¡ ³Ñ¾î¿À´Â°¡? pointer¸¦ ÀÎÀÚ·Î Àü´ÞÇϱâ À§Çؼ´Â º¯¼öÀÇ ¾Õ¿¡ &±âÈ£¸¦ ºÙ¿©¼ ³Ñ°ÜÁØ´Ù, ¿ì¸®°¡ ´Ù½Ã ºÎ¸¦¶§ the address of¶ó°í Àд´Ù. #include <stdio.h> void AddFive(int* Number) { *Number = *Number + 5; } void main() { int nMyNumber = 18; printf("My original number is %dn", nMyNumber); AddFive(&nMyNumber); printf("My new number is %dn", nMyNumber); }
Äڵ带 ÀÛ¼ºÇÏ¿© ½ÇÇàÀ» ÇØº¸°í ¿ÏÀüÇÑ ³ÊÀǰÍÀ¸·Î ¸¸µé¾î¾ß ÇÑ´Ù. ±×·³ ¿©±â¼ Áú¹® ÇØº¸°Ú´Ù. AddFive ÇÔ¼ö¾È¿¡ Number ¾Õ¿¡ *°¡ Áß¿äÇѰ¡?
´äÀº ÀÌ *ÀÌ Numberº¯¼ö¿¡ ÀúÀåµÈ pointer ÀÌ Àڽſ¡ 5¸¦ ´õÇÏ´Â °Ô ¾Æ´Ñ, Number º¯¼ö¿¡ ÀúÀåµÈ pointer °¡ °¡¸£Å°´Â °÷ÀÇ ¼ýÀÚ¿¡ 5¸¦ ´õÇ϶ó´Â °ÍÀ» ÄÄÇ»ÅÍ¿¡°Ô ¾Ë·ÁÁֱ⠶§¹®¿¡ ÇÊ¿äÇÏ´Ù´Â °ÍÀÌ´Ù.
¸¶Áö¸·À¸·Î »ý°¢ÇØÁà¾ß ÇÒ °ÍÀº ¸®ÅÏÇüÀ» Æ÷ÀÎÅÍ·Î ÁÖ°í ½Í´Ù¸é ´ÙÀ½°ú°°ÀÌ ÇØ¾ßµÉ °ÍÀÌ´Ù : int * MyFunction();
ÀÌ ¿¹Á¦´Â MyFunction ¸®ÅϰªÀÌ integerÇü Æ÷ÀÎÅÍÀÌ´Ù. 1.7 Ŭ·¡½º Æ÷ÀÎÅÍ
¿©±â¼ ¸»ÇÒ°Í Àº ¿©·¯°³ÀÇ º¯¼ö³ª ÇÔ¼ö°¡ Àִ°ÍÀ» ±¸Á¶Ã¼³ª Ŭ·¡½º·Î ¹¾î Æ÷ÀÎÅÍ·Î ÀÌ¿ëÇϴ°ÍÀÌ´Ù. class ¼±¾ðÀº ´ÙÀ½°ú°°´Ù. class MyClass
{
public:
int m_Number;
char m_Character;
};
±×¸®°í MyClassŸÀÔ º¯¼ö¸¦ ´ÙÀ½°ú°°ÀÌ ¼±¾ðÇÑ´Ù. MyClass thing;
¸¸¾à ÀÌ °ÍÀ» ¸ð¸£°Ú´Ù¸é, À ºÎºÐ ºÎÅÍ ´Ù½Ã Àо±æ ¹Ù¶õ´Ù.
MyClass Æ÷ÀÎÅÍ º¯¼öÀÇ ¼±¾ðÀº ´ÙÀ½°ú°°ÀÌ ÇÑ´Ù : MyClass *thing;
ÀÌ·¸°Ô ÇÏ¸é Æ÷ÀÎÅÍ º¯¼ö°¡ ¼±¾ðµÈ´Ù. ±×¸®°í, ³Ê´Â ¸Þ¸ð¸®¸¦ ÇÒ´çÇÑ ´ÙÀ½¿¡ pointer º¯¼ö¿¡ ³Ñ°ÜÁà¾ß ÇÒ °ÍÀÌ´Ù. thing = new MyClass;
ÀÌ·¸°Ô ÇÏ¸é »ý±â´Â ¹®Á¦´Â '¾î¶»°Ô Æ÷ÀÎÅ͸¦ ÀÌ¿ëÇÒ °ÍÀΰ¡?' ÀÌ´Ù. º¸Åë class ÀÇ ¸â¹ö¿¡ Á¢±ÙÇϱâ À§Çؼ´Â thing.m_Number ¶ó°í ¾µ°ÍÀÌ´Ù. ÇÏÁö¸¸ ÀÌ Á¢±Ù ¹æ¹ýÀº Á¦´ë·Î µÈ °ÍÀÌ ¾Æ´Ï´Ù. ¿Ö³ÄÇϸé thing Æ÷ÀÎÅÍ º¯¼ö´Â ½ÇÁ¦ °´Ã¼°¡ ¾Æ´Ñ Æ÷ÀÎÅÍÀ̱⠶§¹®ÀÌ´Ù. m_Number º¯¼ö¸¦ ºÒ·¯¿Ã¼ö ÀÖ°Ô ÇØº¸ÀÚ.
ÀÌ °ÍÀº m_Number¸¦ °¡Áö°í ÀÖ´Â ±¸Á¶Ã¼À̰í, ±× Á¡ ¶§¹®¿¡ Á¶±Ý ´Ù¸¥ ±ÔÄ¢À» ÀÌ¿ëÇØ¾ß ÇÑ´Ù. .(dot) À» ->(dash µÚ¿¡ > Å©´Ù ¶ó´Â ±âÈ£¸¦ ºÙÀÎ ±âÈ£)·Î ¹Ù²Ù°í ¹Ù²Û ¿¹Á¦¸¦ º¸ÀÚ. class MyClass
{
public:
int m_Number;
char m_Character;
};
void main()
{
MyClass *pPointer;
pPointer = new MyClass;
pPointer->m_Number = 10;
pPointer->m_Character = 's';
delete pPointer;
}
1.8 ¹è¿ÀÇ Æ÷ÀÎÅÍ
À§¿¡¼ ¼³¸íÇÑ°Íµé »Ó¸¸ ¾Æ´Ï¶ó ¹è¿À» °¡¸£Å°´Â ÁÖ¼Ò Æ÷ÀÎÅÍ ¶ÇÇÑ ¸¸µé¼öÀÖ´Ù, ÀÌ ¿¹Á¦¸¦ º¸ÀÚ. int *pArray; pArray = new int[6];
À̰ÍÀº pArray Æ÷ÀÎÅ͸¦ »ý¼ºÇϰí 6°³ÀÇ ¿ä¼Ò¸¦ °¡Áø ¹è¿ÀÇ ÁÖ¼Ò·Î ¸¸µé¾îÁØ´Ù. µ¿ÀûÇÒ´çÀ» ÀÌ¿ëÇÏÁö ¾Ê°í ´Ù¸¥¹æ¹ýÀ¸·Î ÇÒ¼öµµ ÀÖ´Ù. int *pArray; int MyArray[6]; pArray = &MyArray[0];
À̰ÍÀº &MyArryay[0]·Î ¾µ¼öµµ ÀÖ°í, °£´ÜÈ÷ MyArray¸¦ ¾µ¼öµµ ÀÖ´Ù. À̰ÍÀº ´ÜÁö ¹è¿À» Àû¿ë½ÃŰ´Â c/c++¾ð¾îÀÇ ¹æ¹ýÀÏ»ÓÀÌ´Ù
ÀϹÝÀûÀÎ ÇÔÁ¤Àº pArray = &Myarray; ·Î ¾²´Â°ÍÀε¥ ÀÌ °ÍÀº ¿Ã¹Ù¸£Áö ¾Ê´Â Ç¥ÇöÀÌ´Ù. ¸¸¾à ÀÌ·¸°Ô ½è´Ù¸é, (ŸÀÔÀÌ ¾ø´Â) ¹è¿ÀÇ ÁÖ¼Ò¸¦ °¡¸£Å°´Â Æ÷ÀÎÅÍ·Î ½á¹ö¸± °ÍÀÌ´Ù, ÀÌ Ç¥ÇöÀº ¿øÇÏ´Â ´ë·Î ÀÛµ¿ÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù. 1.9 ¹è¿ÀÇ Æ÷ÀÎÅÍ ÀÌ¿ëÇϱâ
¸¸¾à ¹è¿ÀÇ Æ÷ÀÎÅ͸¦ °¡Áö°Ô µÇ¾ú´Ù¸é, ¾î¶»°Ô À̰ÍÀ» ÀÌ¿ëÇØ¾ß µÉ±î? ÀÚ, intÇüÀÇ ¹è¿À»°¡Áø Æ÷ÀÎÅ͸¦ ¸»Çغ¸¾Æ¶ó.
Æ÷ÀÎÅÍ´Â ÃʱâÈµÈ ¹è¿À» óÀ½ºÎÅÍ °¡Áö°íÀÕÀ»°ÍÀÌ´Ù, ¾Æ·¡ ¿¹Á¦¸¦ º¸ÀÚ : #include <stdio.h> void main() { int Array[3]; Array[0] = 10; Array[1] = 20; Array[2] = 30; int *pArray; pArray = &Array[0]; printf("pArray points to the value %dn", *pArray); }
¸¸µé¾îÁø Æ÷ÀÎÅͰ¡ ¹è¿¿¡¼ ´Ù¸¥ ¿ä¼Ò¸¦ °¡¸£Å°°Ô ÇÏ°í ½Í´Ù¸é, pArray++ ¶ó°í ÇÏ¸é µÈ´Ù. ±×·³ ÀÌÁ¦ pArray + 1 °ú °°Àº pArray++ °ú ºñ½ÁÇÑ pArryay + 2 ¸¦ ÃßÃøÇÒ¼öÀÖÀ»°ÍÀÌ´Ù, À̰ÍÀº Æ÷ÀÎÅ͸¦ ¹è¿ÀÇ ¿ä¼Ò¸¦ µÎ¹øÂ° ¿È°ÜÁÙ °ÍÀÌ´Ù.
¿©±â¼ ÁÖÀÇÇØ¾ßÇÒ°ÍÀº ¹è¿ÀÇ ¹üÀ§ (¿¹Á¦¿¡¼´Â 3)À» ¹þ¾î³ª¸é ¾ÈµÈ´Ù´Â °ÍÀÌ´Ù. ¿Ö³ÄÇϸé ÄÄÆÄÀÏ·¯´Â Æ÷ÀÎÅ͸¦ ¾µ ¶§ ¹è¿ÀÇ ³¡¿¡ ¿Ô´ÂÁö üũÇÏÁö ¸øÇϱ⠶§¹®ÀÌ´Ù. ±×·³ ½±°Ô ÀÌ ¹æ¹ýÀ» ¾µ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¿¹Á¦¸¦ ´Ù½Ã º¸ÀÚ. ¿ì¸®°¡ ÁöÁ¤ÇÑ 3°³ÀÇ º¯¼ö¸¦ Ãâ·ÂÇØÁØ´Ù : #include <stdio.h> void main() { int Array[3]; Array[0] = 10; Array[1] = 20; Array[2] = 30; int *pArray; pArray = &Array[0]; printf("pArray points to the value %dn", *pArray); pArray++; printf("pArray points to the value %dn", *pArray); pArray++; printf("pArray points to the value %dn", *pArray); }
pArray Æ÷ÀÎÅÍ º¯¼ö¸¦ »¬ ¼öµµÀÖ´Ù. ÀϹÝÀûÀÎ Æ÷ÀÎÅÍÀÇ pArray·ÎºÎÅÍ pArray - 2 ´Â 2¹øÂ° ¾ÕÀÇ ¿ä¼Ò¸¦ °¡¸£Å²´Ù. ¿©±â¼ ´õÇϰųª »©´Â°ÍÀº Æ÷ÀÎÅÍ º¯¼öÀÌÁö ¹è¿ÀÇ °ªÀÌ ¾Æ´Ï´Ù. Æ÷ÀÎÅÍÀÇ ¸î Á¶ÀÛµé°ú ¹è¿ÀÇ »ç¿ëÀº ´ëºÎºÐ ¹«¾ð°¡¸¦ ãÀ»¶§ ¹Ýº¹¹®¿¡¼ ÁÖ·Î »ç¿ëµÈ´Ù.
±×¸®°í Æ÷ÀÎÅÍÀÇ °ªµµ int* pNumberSet¿Í °°ÀÌ °¡Á®¿Ã ¼ö ÀÖ´Ù. ¹è¿À» ´Ù·ç¾î º¸¾ÒÀ» °ÍÀÌ´Ù. ¸¸¾à Æ÷ÀÎÅ͸¦ ÀÌ¿ëÇÑ ¹è¿ÀÇ °ªÀ» °¡Á®¿Ã ¼öµµ ÀÖ´Ù. pNumberSet[0] ´Â *pNumberSet¿Í °°Àº ¶æÀÌ´Ù. ±×¸®°í pNumberSet[1]´Â *( pNumberSet + 1 ) ¿Í °°Àº ¶æÀÌ´Ù.
¹è¿¿¡¼ ¸¶Áö¸·À¸·Î Á¶½ÉÇØ¾ßÇÒ °ÍÀº, ¸¸¾à ¹è¿À» ÀÌ¿ëÇϱâÀ§ÇØ new Ű¿öµå·Î ¸Þ¸ð¸®ÇÒ´çÀ» ÇØÁÖ¾ú´Ù¸é ¿¹Á¦¿Í °°ÀÌ ÇØÁÖ¾î¾ßÇÑ´Ù. int *pArray; pArray = new int[6]; delete [] pArray;
[] µÚ¿¡ ÀÖ´Â ¹è¿À» Á¦°Å ÇØÁÖ°Ú´Ù´Â °ÍÀÌ´Ù. ÄÄÆÄÀÏ·¯¿¡°Ô Áö¿ì´Â °ÍÀÌ ¹è¿À̰í ÇϳªÀÇ item¾Æ´Ï¶ó´Â°ÍÀ» ¸»ÇØÁØ´Ù. ¸¸¾à À̹æ¹ýÀ» ²À ÀÌ¿ëÇÏÁö ¾Ê´Â´Ù¸é '¸Þ¸ð¸® ´©¼öÇö»óÀÌ ÀϾ °ÍÀÌ´Ù.
new Ű¿öµå¸¦ ÀÌ¿ëÇØ¼ ÇÒ´çÇÏÁö ¾Ê¾Ò´Ù¸é ¸Þ¸ð¸® ÇØÁ¦¸¦ ÇÒ Çʿ䰡 ¾ø´Ù. void main() { int number; int *pNumber = number; delete pNumber; // wrong - *pNumber´Â new Ű¿öµå·Î ÇÒ´çµÇÁö ¾Ê¾Ò´Ù } 2 FAQ2.1 new¿Í delete¸¦ ¾²·Á´Âµ¥ ¿Ö 'symbol undefined' ¿¡·¯°¡ ³ª³ª¿ä?
´ëºÎºÐ C++·Î ÀÛ¼ºµÈ ¼Ò½ºÄڵ带 C ÄÄÆÄÀÏ·¯¸¦ ÀÌ¿ëÇØ¼ ÄÄÆÄÀÏ ÇÒ¶§ ¹ß»ýÇÑ´Ù. new¿Í delete ¿¬»êÀÚ´Â C++¸¸ÀÌ °¡Áö°í ÀÖÀ¸¸ç, C ÄÄÆÄÀÏ·¯´Â ÀÌµé ¿¬»êÀÚ¸¦ ÀνÄÇÏÁö ¸øÇÑ´Ù.
ÀÌ ¹®Á¦´Â C++ÄÄÆÄÀÏ·¯¸¦ »ç¿ëÇÏ´Â °ÍÀ¸·Î ÇØ°áÇÒ ¼ö ÀÖ´Ù. 2.2 new¿Í mallocÀÌ ¾î¶»°Ô ´Ù¸£³ª¿ä?
newŰ¿öµå´Â c++ ¸í¼¼¿¡ Æ÷ÇԵǾî ÀÖ´Ù. ±×·¡¼ µ¿Àû¸Þ¸ð¸®¸¦ ¸¸µå´Â Ç¥Áعæ¹ý(À̿ܿ¡ À©µµ¿ì ¸Þ¸ð¸®ÇÒ´ç ·çÆ¾À» ÀÌ¿ëÇÏ´Â)ÀÌ´Ù.
c++ ÀÀ¿ë ÇÁ·Î±×·¥À» ÀÛ¼ºÇϴµ¥ ÀÖ¾î¼ malloc()¸¦ »ç¿ëÇÒ ÇÊ¿ä´Â ¾ø´Ù. ³Ê´Â c c++ ÀÀ¿ëÇÁ·Î±×·¥¿¡¼ malloc ÀÇ ÀÌ¿ëÀº Àý´ëÀûÀ¸·Î ÇÊ¿äÇÏÁö ¾Ê´Â´Ù
¿Ö³ÄÇϸé mallocÀº c++ÀÇ °´Ã¼ÁöÇâÀûÀΠƯ¡ÀÌ ¾Æ´Ï±â ¶§¹®ÀÌ´Ù new¸¦ ÀÌ¿ëÇϸé Ŭ·¡½ºµéÀ» ÇÒ´çµÈ ¸Þ¸ð¸®´Â Ŭ·¡½º»ý¼ºÀÚ¸¦ È£ÃâÇØ ¿¹¹æÇÑ´Ù, ´ÜÁö ÀÌÇϳªÀÇ ¿¹¿¡¼µµ ¹®Á¦°¡ ÀϾÙ.
malloc °ú free»ç¿ë½Ã ÀϾ´Â ¹®Á¦ÀÇ °á°ú¿¡¼ ó·³ mallocÀÇ ¸ñÀû°ú Àǵµ´Â ¾µ¸ð¾ø¾îÁ³±â¶§¹®¿¡ ÀÌ ±Û¿¡¼ ±×°Í¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ À̾߱âµéÀ» ´Ù·çÁö ¾Ê´Â´Ù.
À̰ÍÀº C++ÀÇ °æ¿ìÀ̰í C¿¡¼´Â ¿©ÀüÈ÷ malloc()ÇÔ¼ö¸¦ ÀÌ¿ëÇÑ ¸Þ¸ð¸® ÇÒ´çÀÌ Áß¿äÇÏ°Ô »ç¿ëµÈ´Ù. ¶ÇÇÑ ¿©·¯°¡Áö ÀÌÀ¯·Î C++À» »ç¿ëÇÏ´õ¶óµµ new ´ë½Å malloc¸¦ »ç¿ëÇϱ⵵ ÇÑ´Ù.
2.3 free ¿Í delete¸¦ °°ÀÌ »ç¿ëÇØµµ µÇ³ª¿ä?
¸Þ¸ð¸®¸¦ ÇÒ´çÇÑ ·çƾ°ú µ¿ÀÏÇÑ ·çƾÀ» »ç¿ëÇØ¼ ¸Þ¸ð¸®¸¦ ÇØÁ¦ÇØ ÁÖ¾î¾ß ÇÑ´Ù. ¿¹¸¦µé¾î free()´Â malloc()À¸·Î ÇÒ´çÇÑ ¸Þ¸ð¸®¸¦ ÇØÁ¦ ÇÒ¶§¸¸ À¯È¿Çô, delete´Â new·Î ÇÒ´çÇÑ ¸Þ¸ð¸®ÀÇ ÇØÁ¦¿¡¸¸ À¯È¿ÇÏ´Ù. 2.4 ÂüÁ¶
À̱ÛÀº ÂüÁ¶¿¡ ´ëÇÑ ³»¿ëÀ» °ÅÀÇ ´Ù·ç°í ÀÖÁö ¾Ê´Ù. ±×·¯³ª, ¸¹Àº»ç¶÷µéÀÌ À̰Ϳ¡ ´ëÇØ Áú¹®Çϴ°ÍÀ» º¸¾Ò´Ù. °£´ÜÈ÷ ¾ê±âÇØ º¸ÀÚ¸é ÂüÁ¶´Â Æ÷ÀÎÅÍ¿Í ºñ½ÁÇÑ ¸ñÀûÀ¸·Î »ç¿ëÇϱâ À§ÇÑ °£´ÜÇÑ ´ë¾ÈÁß¿¡ ÇϳªÀÌ´Ù. ÂüÁ¶ÀÇ °³³äÀ¸·Î Æ÷ÀÎÅ͸¦ ¹Ù¶óº»´Ù¸é, & ¸¦ 'the address of' ¶ó°í ÀÐÁö¾Ê°í 'a reference to' ¶ó°í ÀÐÀ» ¼ö ÀÖ´Ù.
ÂüÁ¶´Â Æ÷ÀÎÅÍ¿Í °°´Ù. ÀÚµ¿À¸·Î ¿ªÂüÁ¶°¡ µÇ´Â°ÍÀ» »©°í¸»ÀÌ´Ù. ¾Æ·¡ÀÇ Äڵ忡¼ pNumberÀÇ Æ÷ÀÎÅÍ´Â myOtherNumberÀÇ Æ÷ÀÎÅÍ¿Í °°´Ù. int* pNumber = &myOtherNumber; *pNumber = 25;Æ÷ÀÎÅÍ¿Í ÂüÁ¶ÀÇ ´Ù¸¥ Â÷ÀÌÁ¡À̶ó¸é ÂüÁ¶´Â Æ÷ÀÎÅÍó·³ ³ªÁß¿¡ ¼±¾ðÀ» ¹Ù²ÙÁö¾Ê´Â 'ÀçÁöÁ¤'ÇÏÁö ¾Ê¾Æµµ µÈ´Ù´Â Á¡ÀÌ´Ù.
¿¹¸¦µé¾î ´ÙÀ½ÄÚµåÀÇ °á°ú´Â '20'ÀÌ ³ª¿Ã°ÍÀÌ´Ù : int myFirstNumber = 25;
int mySecondNumber = 20;
int &myReference = myFirstNumber;
myReference = mySecondNumber;
printf("%d", myFristNumber);
Ŭ·¡½ºÀ϶§, º§·ù´Â ´ÙÀ½°ú°°Àº ±¸Á¶·Î ÂüÁ¶·Î º¯¼ö¸¦ ¼³Á¤ÇÒ¼öÀÖ´Ù : CMyClass::CMyClass(int &variable) : m_MyReferenceInCMyClass(variable) { // Äڵ带 ¿©±â¿¡ ÀÛ¼ºÇÑ´Ù }
ÇÔ¼ö¶ó¸é ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µÉ °ÍÀÌ´Ù. #include <stdio.h> void e2(int &a) -- Ä¿ÇÃ´Ô ¸»¿¡ µû¶ó ¼öÁ¤ { a = a * 2; } int main() { int value=3; e2(value); printf("%d\n", value); } 3 Á¤¸®
ÀÌ ¹®¼¸¦ ÀÐÀ¸¸é Æ÷ÀÎÅ͸¦ ÀÌÇØÇϴµ¥ ¾î·Á¿òÀ» ´À³¢Áö ¾Ê´Â ¼öÁØ¿¡ ¿Ã¶ó¼³ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ±×·¯³ª ÃÖ¼ÒÇÑ µÎ¹ø ÀÌ»óÀº ºÁ¾ß ÇÒ °ÍÀÌ´Ù. ¸¹Àº »ç¶÷µéÀÌ Çѹø¿¡ ÀÌÇØÇϱâ´Â Èûµå¸®¶ó »ý°¢µÈ´Ù. ´ÙÀ½Àº ¿©±â¿¡¼ ´Ù·é ³»¿ëÁß ÇÙ½ÉÀ̶ó ÇÒ ¸¸ÇÑ °ÍµéÀÌ´Ù.
4 Âü°í¹®¼µé
CategoryLanguage CategoryC
5 CommentÄ¿Çà 2007/01/25 11:40:14 2.4¹ø ÂüÁ¶¿¡¼ Ãß°¡ÇϽŠe2() ÇÔ¼ö´Â ÂüÁ¶³»¿ëÀÌ´Ï Æ÷ÀÎÅͰ¡ ¾Æ´Ñ ÂüÁ¶·Î ¹Þ´Â ÀÎÀÚÇüŸ¦ ¸¸µé¾îÁà¾ßÇÏÁö ¾ÊÀ»±î¿ä?yundream 2007/01/31 11:50:21 °¨»ç.. ±×·±µ¥ ÀÌ¹Ì ¹Ù²ã ³õ¾Ò³×¿ä. |
|
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|
¶ÇÇÑ malloc°ú free´Â cpp¶óÀ̺귯¸®ÀÇ ÀϺκÐÀÌ ¾Æ´Õ´Ï´Ù. cpp¿¡¼ÀÇ »ç¿ëÀº ±ÇÀåµÇÁö ¾Ê´Â°Í °°½À´Ï´Ù