15-1-³ª.Æ÷ÀÎÅÍ¿Í const

const¸¦ Æ÷ÀÎÅÍ¿Í ÇÔ²² »ç¿ëÇϸé È¿°ú°¡ Á¶±Ý ´Þ¶óÁø´Ù. ´ÙÀ½ ¿¹Á¦´Â Æ÷ÀÎÅÍ¿Í constÀÇ °ü°è¸¦ ½ÇÇèÇØ º¸±â À§ÇØ ÀÛ¼ºÇߴµ¥ ÄÄÆÄÀÏÇØ º¸¸é ¸î ±ºµ¥¼­ ¿¡·¯°¡ ¹ß»ýÇÒ °ÍÀÌ´Ù.

 

¿¹ Á¦ : ConstPointer

#include <Turboc.h>

 

void main()

{

     int ar[5]={1,2,3,4,5};

 

     int *pi1=&ar[0];

     pi1++;                // Æ÷ÀÎÅÍ°¡ ´Ù¸¥ ´ë»óü¸¦ °¡¸®Å³ ¼ö ÀÖ´Ù.

     *pi1=0;                   // ´ë»óü¸¦ º¯°æÇÒ ¼ö ÀÖ´Ù.

 

     const int *pi2=&ar[0];

     pi2++;                // Æ÷ÀÎÅÍ°¡ ´Ù¸¥ ´ë»óü¸¦ °¡¸®Å³ ¼ö ÀÖ´Ù.

     *pi2=0;                   // ¿¡·¯ : ´ë»óü°¡ »ó¼öÀ̹ǷΠº¯°æÇÒ ¼ö ¾ø´Ù.

 

     int * const pi3=&ar[0];

     pi3++;                // ¿¡·¯ : Æ÷ÀÎÅÍ°¡ ´Ù¸¥ ´ë»óü¸¦ °¡¸®Å³ ¼ö ¾ø´Ù.

     *pi3=0;                   // ´ë»óü´Â º¯°æÇÒ ¼ö ÀÖ´Ù.

 

     const int * const pi4=&ar[0];

     pi4++;                // ¿¡·¯ : Æ÷ÀÎÅÍ°¡ ´Ù¸¥ ´ë»óü¸¦ °¡¸®Å³ ¼ö ¾ø´Ù.

     *pi4=0;                   // ¿¡·¯ : ´ë»óü°¡ »ó¼öÀ̹ǷΠº¯°æÇÒ ¼ö ¾ø´Ù.

}

 

Á¤¼öÇü ¹è¿­ arÀÌ ¼±¾ðµÇ¾î ÀÖ°í ÀÌ ¹è¿­À» °¡¸®Å°´Â Æ÷ÀÎÅÍ 4°³¸¦ ¼±¾ðÇϴµ¥ constÀÇ À§Ä¡¿¡ µû¶ó »ó¼ö°¡ µÇ´Â ´ë»óÀÌ Á¶±Ý¾¿ ´Þ¶óÁø´Ù. ¸ÕÀú const¸¦ ¾²Áö ¾ÊÀº ÀϹÝÀûÀÎ Æ÷ÀÎÅÍ pi1À» º¸ÀÚ. pi1Àº ar[0]ÀÇ ¹øÁö, ±×·¯´Ï±î ar ¹è¿­ÀÇ Ã¹ ¹ø° ¿ä¼Ò¸¦ °¡¸®Å°°í ÀÖ´Ù. ÀÌ »óÅ¿¡¼­ pi1À» Áõ°¡½ÃÅ°¸é ¹è¿­ÀÇ ´Ù¸¥ ¿ä¼Ò¸¦ °¡¸®Å°µµ·Ï À̵¿Çϸç *pi1¿¬»ê½ÄÀ¸·Î pi1ÀÌ °¡¸®Å°´Â °÷ÀÇ °ªÀ» Àаųª ¹Ù²Ü ¼ö ÀÖ´Ù. pi1 Æ÷ÀÎÅÍ ÀÚüµµ »ó¼ö°¡ ¾Æ´Ï¸ç pi1ÀÌ °¡¸®Å°´Â ´ë»óüµµ »ó¼ö°¡ ¾Æ´Ï¹Ç·Î ¾çÂÊ ¸ðµÎ ¿øÇϴ´ë·Î º¯°æ °¡´ÉÇÏ´Ù.

´ÙÀ½Àº const int * ŸÀÔÀ¸·Î ¼±¾ðµÈ pi2¸¦ º¸ÀÚ. ÀÌ Æ÷ÀÎÅÍ´Â const int¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ º¯¼ö·Î ¼±¾ðµÇ¾úÀ¸¹Ç·Î ÀÌ Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â ´ë»óü´Â Á¤¼öÇü »ó¼öÀ̸ç Æ÷ÀÎÅÍ ÀÚü´Â »ó¼ö°¡ ¾Æ´Ï´Ù. ±×·¡¼­ pi2++À̳ª pi2-- ¶Ç´Â pi2¿¡ ´Ù¸¥ ´ë»óüÀÇ ¹øÁö¸¦ Á÷Á¢ ´ëÀÔÇÏ¿© pi2°¡ ´Ù¸¥ ´ë»óü¸¦ °¡¸®Å°µµ·Ï ÇÒ ¼ö´Â ÀÖÁö¸¸ *pi2¸¦ º¯°æÇÏ´Â °ÍÀº Çã¶ôµÇÁö ¾Ê´Â´Ù. »ó¼ö¸¸ °¡¸®Å°´Â Æ÷ÀÎÅÍ·Î ¼±¾ðµÇ¾ú±â ¶§¹®¿¡ ÀÌ Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â °÷ÀÇ ³»¿ëÀ» º¯°æÇÒ ¼ö ¾ø´Ù. ÀÌ·± Æ÷ÀÎÅ͸¦ »ó¼ö Áö½Ã Æ÷ÀÎÅÍ(Pointer to Constant)¶ó°í ÇÑ´Ù.

¹°·Ð pi2°¡ °¡¸®Å°°í ÀÖ´Â ar ¹è¿­ ÀÚü´Â »ó¼ö°¡ ¾Æ´Ï¹Ç·Î ar[0]=0;¿Í °°ÀÌ Á÷Á¢ ÀÌ ¹è¿­ ¿ä¼Ò¿¡ °ªÀ» ´ëÀÔÇÏ´Â °ÍÀº °¡´ÉÇÏ´Ù. ÇÏÁö¸¸ pi2 Æ÷ÀÎÅÍ·Î °£Á¢ÀûÀ¸·Î ¹è¿­ ¿ä¼ÒÀÇ °ªÀ» º¯°æÇÒ ¼ö´Â ¾ø´Ù. »ó¼ö Áö½Ã Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â °÷ÀÇ ³»¿ëÀº »ó¼ö·Î Ãë±ÞµÇ¹Ç·Î ÀÌ Æ÷ÀÎÅ͸¦ »ç¿ëÇÏ¿© °ªÀ» ¹Ù²Ù´Â °ÍÀº ¿¡·¯·Î 󸮵ȴÙ.

´ÙÀ½Àº const ¿¹¾à¾î°¡ Æ÷ÀÎÅÍ º¯¼ö ¾Õ¿¡ »ç¿ëµÈ pi3¸¦ º¸ÀÚ. int * const pi3·Î ¼±¾ðµÇ¾î Àִµ¥ ÀÌ ¼±¾ð¹®Àº pi3 Æ÷ÀÎÅÍ º¯¼ö¸¦ »ó¼ö·Î ¸¸µç´Ù. ÀÌ·± Æ÷ÀÎÅ͸¦ »ó¼ö Æ÷ÀÎÅÍ(Constant Pointer)¶ó°í ÇÏ¸ç º¯¼ö ÀÚü°¡ »ó¼öÀ̹ǷΠ´Ù¸¥ ´ë»óü¸¦ °¡¸®Å³ ¼ö ¾øÁö¸¸ ÀÌ Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â ´ë»óü´Â »ó¼ö°¡ ¾Æ´Ï¹Ç·Î ´ë»óüÀÇ °ªÀ» º¯°æÇÏ´Â °ÍÀº °¡´ÉÇÏ´Ù.

¸¶Áö¸· 4¹ø° ¿¹ pi4´Â const°¡ ´ë»óü¿Í Æ÷ÀÎÅÍ º¯¼ö¿¡ ¸ðµÎ »ç¿ëµÇ¾ú´Âµ¥ ÀÌ·¸°Ô ¼±¾ðÇϸé Æ÷ÀÎÅÍ º¯¼ö ÀÚüµµ »ó¼öÀÌ°í ´ë»óüµµ »ó¼ö·Î Ãë±ÞµÈ´Ù. À̸§À» ºÙÀÌÀÚ¸é »ó¼ö Áö½Ã »ó¼ö Æ÷ÀÎÅͶó°í ÇÒ ¼ö ÀÖ´Ù. ±×·¡¼­ pi4´Â ÃÖÃÊ ¼±¾ðµÉ ¶§ ÁÖ¾îÁø ar[0] ÀÌ¿ÜÀÇ ´Ù¸¥ ´ë»óü¸¦ °¡¸®Å³ ¼ö ¾øÀ¸¸ç ar[0]ÀÇ °ªÀ» º¯°æÇÒ ¼öµµ ¾ø´Ù. ¿À·ÎÁö ar[0]ÀÇ °ªÀ» ÀÐÀ» ¼ö¸¸ ÀÖ´Ù.

Æ÷ÀÎÅÍ ¼±¾ð½Ã const Å°¿öµå·Î »ó¼ö Æ÷ÀÎÅ͸¦ ¸¸µå´Â 4°¡Áö °æ¿ì¸¦ »ìÆì ºÃ´Âµ¥ Á¶±Ý È¥¶õ½º·¯¿ï °ÍÀÌ´Ù. const Å°¿öµåÀÇ À§Ä¡¿¡ µû¶ó »ó¼ö°¡ µÇ´Â ´ë»óÀÌ ´Þ¶óÁö´Âµ¥ pi2¿Í pi3ÀÇ °æ¿ì¸¸ Àß ±¸ºÐÇÏ¸é µÈ´Ù. const Å°¿öµå ¹Ù·Î ´ÙÀ½ ´ë»óÀÌ »ó¼ö°¡ µÇ´Âµ¥ ŸÀÔ ¾Õ¿¡ ÀÖÀ¸¸é ´ë»óü°¡ »ó¼ö°¡ µÇ¸ç º¯¼ö¸í ¾Õ¿¡ ÀÖÀ¸¸é º¯¼ö¸¸ »ó¼ö°¡ µÈ´Ù.

int const *´Â const int *¿Í °°Àº Ç¥ÇöÀÌ¸ç ´ë»óü°¡ »ó¼öÀε¥ constÀÇ À§Ä¡°¡ Á÷°üÀûÀÌÁö ¾Ê¾Æ¼­ Àß »ç¿ëµÇÁö ¾Ê´Â´Ù. ´ÙÀ½Àº ÇÑ´Ü°è ´õ È®ÀåÇؼ­ ÀÌÁß Æ÷ÀÎÅÍ¿Í constÀÇ °ü°è¿¡ ´ëÇØ ¿¬±¸ÇØ º¸ÀÚ. ÀÌÁß Æ÷ÀÎÅÍÀÇ °æ¿ì´Â const int * const * const ppi; µûÀ§·Î const¸¦ ¼¼ ±ºµ¥³ª ºÙÀÏ ¼ö ÀÖ°í À§Ä¡¿¡ µû¶ó constÀÇ Àǹ̴ ´Þ¶óÁø´Ù.

 

¡á Á¦ÀÏ ¾Õ : ppi°¡ °¡¸®Å°´Â Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â Á¤¼ö°¡ »ó¼ö¶ó´Â ¶æ

¡á °¡¿îµ¥ : ppi°¡ °¡¸®Å°´Â Æ÷ÀÎÅÍ°¡ »ó¼ö¶ó´Â ¶æ

¡á Á¦ÀÏ ³¡ : ppi ÀÚü°¡ »ó¼ö Æ÷ÀÎÅͶó´Â ¶æ

 

´ÙÀ½ ¿¹Á¦´Â constÀÇ À§Ä¡¿¡ µû¶ó ÀÌÁß Æ÷ÀÎÅÍ°¡ ¾î¶² Àǹ̸¦ °¡Áö¸ç ¾î¶² µ¿ÀÛÀÌ ±ÝÁöµÇ´ÂÁö¸¦ Å×½ºÆ®ÇÑ´Ù. ¿¡·¯°¡ ³ª´Â ¹®ÀåÀº ¸ðµÎ ÁÖ¼® ó¸®ÇØ µÎ¾úÀ¸¸ç µÚÂÊ¿¡ ¼³¸íÀ» ´Þ¾Æ µÎ¾úÀ¸¹Ç·Î ÁÖ¼®À» ÀÐ¾î º¸µµ·Ï ÇÏÀÚ.

 

¿¹ Á¦ : ConstDblPointer

#include <Turboc.h>

 

void main()

{

     int i=5;

     int *pi=&i;

     const int *pci;

     int * const cpi=&i;

     const int * const cpci=&i;

 

     // ÀÏ¹Ý ÀÌÁß Æ÷ÀÎÅÍ - ¸ðµÎ °¡´É

     int **ppi1=&pi;

     ppi1++;

     (*ppi1)++;

     **ppi1=0;

 

     // »ó¼ö Áö½Ã Æ÷ÀÎÅÍÀÇ Æ÷ÀÎÅÍ

     const int **ppi2=&pci;

     ppi2++;

     (*ppi2)++;

//  **ppi2=0;      // ¿¡·¯ : ÃÖÁ¾ ´ë»óü(Á¤¼ö) º¯°æ ºÒ°¡

 

     // ºñ»ó¼ö Áö½Ã »ó¼ö Æ÷ÀÎÅÍÀÇ Æ÷ÀÎÅÍ

     int * const *ppi3=&cpi;

     ppi3++;

//  (*ppi3)++;     // ¿¡·¯ : Áß°£ ´ë»óü(Æ÷ÀÎÅÍ) º¯°æ ºÒ°¡

     **ppi3=0;

 

     // ºñ»ó¼ö Áö½Ã ºñ»ó¼ö Æ÷ÀÎÅÍÀÇ »ó¼ö Æ÷ÀÎÅÍ

     int ** const ppi4=&pi;

//  ppi4++;              // ¿¡·¯ : Æ÷ÀÎÅÍ ÀÚü º¯°æ ºÒ°¡

     (*ppi4)++;

     **ppi4=0;

 

     // »ó¼ö Áö½Ã »ó¼ö Æ÷ÀÎÅ͸¦ Áö½ÃÇÏ´Â »ó¼ö Æ÷ÀÎÅÍ - ÀüºÎ ¿¡·¯

     const int * const * const ppi5=&cpci;

//  ppi5++;

//  (*ppi5)++;

//  **ppi5=0;

}

 

ÀÌ ¿¹Á¦¸¦ º¸°í ¾Æ¸¶ ¿©·¯ºÐµéÀº "¾Æ´Ï ÀÌ »ç¶÷ÀÌ Áö±Ý Àå³­Çϳª?" ÀÌ·± »ý°¢À» ÇÒ °ÍÀÌ´Ù. Àå³­ ÇÏ´Â °Ô ¸Â´Ù. ½ÇÀü¿¡¼­ ÀÌ·± Æ÷ÀÎÅÍ°¡ ²À ÇÊ¿äÇÑ °æ¿ì´Â ±×¸® ÈçÇÏÁö ¾ÊÀ¸¹Ç·Î ÀÌ·± º¹ÀâÇÑ °Í±îÁö »ó¼¼ÇÏ°Ô ¾Ë¾Æ¾ß ÇÒ ÇÊ¿ä´Â ¾øÁö¸¸ ÀÌ Á¤µµ ¿¬½ÀÀÌ µÇ¾î ÀÖ´Ù¸é Æ÷ÀÎÅÍ¿Í constÀÇ °ü°è¸¦ È®½ÇÇÏ°Ô ¾È´Ù°í ÀÚºÎÇصµ ÁÁ´Ù. const ¹Ù·Î ´ÙÀ½ ´ë»óÀÌ »ó¼ö°¡ µÈ´Ù´Â ¿øÄ¢Àº µ¿ÀÏÇÏ´Ù. ÀÌÁß Æ÷ÀÎÅÍ¿¡ ´ëÇØ const Å°¿öµå¸¦ ¾²´Â °æ¿ì´Â »ç½Ç»ó ¹«Ã´ µå¹°Áö¸¸ Æ÷ÀÎÅÍÀÇ ·¹ÆÛ·±½º¿¡ ´ëÇؼ­´Â Á¾Á¾ ÀÌ·± Ç¥ÇöÀÌ »ç¿ëµÇ±âµµ ÇÑ´Ù.

±×·¸´Ù¸é ¿Ö »ó¼ö Æ÷ÀÎÅÍ°¡ ÇÊ¿äÇÑ °ÍÀϱî? const int *pi2ÀÇ ´ë»óü°¡ »ó¼ö¶ó´Â °ÍÀ» ¾Ë°í ÀÖ´Ù¸é *pi2ÀÇ °ªÀ» ¹Ù²ÙÁö ¾ÊÀ¸¸é ±×¸¸ÀÌ ¾Æ´Ñ°¡? ÄÄÆÄÀÏ·¯ Â÷¿ø¿¡¼­ ÀÌ·± »ó¼ö Æ÷ÀÎÅ͸¦ Áö¿øÇÏ´Â ÀÌÀ¯´Â °íÀÇµç ½Ç¼öµç ¹Ù²îÁö ¸»¾Æ¾ß ÇÒ Áß¿äÇÑ °ªÀ» º¸È£Çϱâ À§Çؼ­ÀÌ´Ù. ´ÙÀ½ Äڵ忡¼­ RATIO´Â ¾î¶² °è»ê½Ä¿¡ »ç¿ëµÇ´Â ¾ÆÁÖ Áß¿äÇÑ »ó¼öÀÌ´Ù.

 

const double RATIO=82.34;

RATIO=99.99;                   // ¿¡·¯

const double *pd=&RATIO;

*pd=99.99;                            // ¿¡·¯

 

»ó¼ö·Î ¼±¾ðÇßÀ¸¹Ç·Î µÎ ¹ø° ÁÙó·³ RATIO¿¡ ¾î¶² °ªÀ» Á÷Á¢ ´ëÀÔÇÏ´Â °ÍÀº ´ç¿¬È÷ ¿¡·¯·Î ó¸®µÉ °ÍÀÌ´Ù. ´«¿¡ »·È÷ º¸ÀÌ´Â »ó¼ö¿¡ °ªÀ» ´ëÀÔÇÏ´Â ¸ÛûÇÑ ½Ç¼ö¸¦ ÇÏÁö´Â ¾ÊÁö¸¸ Æ÷ÀÎÅ͸¦ ÅëÇØ °£Á¢ÀûÀ¸·Î ÀÌ °ªÀ» ¾×¼¼½ºÇÒ ¶§´Â ¿ì¹ßÀûÀÎ ½Ç¼ö¸¦ ÇÒ °¡´É¼ºÀÌ ÀÖ´Ù. RATIO´Â »ó¼ö¶ó¼­ Áº¯°ªÀÌ ¾Æ´ÏÁö¸¸ ¸Þ¸ð¸®¸¦ Á¡À¯ÇÏ°í ÀÖ°í ¹øÁö°¡ ÀÖÀ¸¹Ç·Î &¿¬»êÀÚÀÇ ÇÇ¿¬»êÀÚ·Î »ç¿ëµÉ ¼ö ÀÖ´Ù.

¸¸¾à ÀÌ »ó¼ö¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ pd¸¦ »ç¿ëÇÏ¿© °£Á¢ÀûÀ¸·Î RATIOÀÇ °ªÀ» ¹Ù²Ü ¼ö ÀÖ´Ù¸é ÀÌ°ÍÀº ÀáÀçÀûÀ¸·Î ³í¸®ÀûÀÎ ¿¡·¯°¡ µÉ À§ÇèÀÌ ¾ÆÁÖ Å©´Ù. »ó¼ö¸¦ °¡¸®Å°´Â Æ÷ÀÎÅ͸¦ ÇÔ¼ö³¢¸® ÁÖ°Å´Ï ¹Þ°Å´Ï ÇÏ´Ù º¸¸é ¾ðÁ¦ ÀÌ °ªÀÌ ¹Ù²î¾î ¹ö¸±Áö ¾Ë ¼ö ¾ø¾îÁø´Ù. ¸¸¾à RATIO°¡ Á÷¿øµé¿¡°Ô ÁÙ º¸³Ê½º ºñÀ²À̶ó¸é ÀÌ °ªÀÌ Á¶±Ý¸¸ Ä¿Á®µµ ¾öû³­ ÀçÁ¤ ´©ÃâÀÌ ¹ß»ýÇÒ °ÍÀÌ´Ù. ÀÌ·¸°Ô µÇ¸é Á÷¿øµéÀº ÁÁ¾ÆÇÏ°ÚÁö¸¸ ¹ö±×¸¦ ¸¸µç °³¹ßÀÚ´Â »çÇ¥¸¦ ½á¾ß ÇÒ °ÍÀÌ´Ù.

Æ÷ÀÎÅÍ´Â ´ë»óü¸¦ ¿Å°Ü ´Ù´Ï¸ç °ªÀ» Àб⵵ ÇÏ°í ¹Ù²Ü ¼öµµ ÀÖ´Â ±²ÀåÈ÷ Æí¸®ÇÑ µµ±¸ÀÌÁö¸¸ ´Ù¼Ò À§ÇèÇÑ ¸éÀÌ ÀÖ´Ù. ¾î¶² ´ë»óü¿¡ ´ëÇÑ ¹øÁö¸¦ ¾Ë°í ÀÖÀ¸¸é Æ÷ÀÎÅ͸¦ ÅëÇØ ÀÌ ´ë»óü¸¦ ¸¶À½´ë·Î ¹Ù²Ü ¼ö Àֱ⠶§¹®ÀÌ´Ù. ÀϺη¯ ±×·¸°Ô ÇÏÁö´Â ¾Ê°ÚÁö¸¸ ½Ç¼ö·Î Æ÷ÀÎÅ͸¦ À߸ø Á¶ÀÛÇϰųª ¶Ç´Â ¿ÜºÎÀûÀÎ ´Ù¸¥ ¿¡·¯¿¡ ÀÇÇØ Æ÷ÀÎÅÍ°¡ ¾û¶×ÇÑ °÷À» °¡¸®Å³ °¡´É¼ºÀº Ç×»ó ÀÖ´Ù.

ªÀº Äڵ忡¼­´Â ÀÌ·± ½Ç¼ö¸¦ ÇÏ´õ¶óµµ ±Ý¹æ ¾îµð¼­ ¹®Á¦°¡ ¹ß»ýÇß´ÂÁö ¹ß°ßÇÒ ¼ö ÀÖÁö¸¸ ´ëÇü ÇÁ·ÎÁ§Æ®¿¡¼­´Â ½Ç¼ö¸¦ ÇÑ °÷°ú Áõ»óÀÌ ³ªÅ¸³ª´Â °÷ÀÌ ¿ÏÀüÈ÷ µý °÷ÀÏ ¼ö Àֱ⠶§¹®¿¡ ¹ß°ßÇϱ⠴ë´ÜÈ÷ ¾î·Æ´Ù. °Ô´Ù°¡ ´ëÇü ÇÁ·ÎÁ§Æ®´Â º¸Åë ¿©·¯ °³¹ßÀÚ°¡ µ¿½Ã¿¡ ÀÛ¾÷À» Çϴµ¥ Á» ¶î¶îÇÑ °³¹ßÀÚ°¡ ÀÌ·± ½Ç¼ö¸¦ Çϸé ÇÁ·ÎÁ§Æ® Àüü°¡ ½ÃÇÑÆøźÀ» °¡Áö°Ô µÇ´Â ¼ÀÀÌ´Ù. ±×·¡¼­ ÄÄÆÄÀÏ·¯ Â÷¿ø¿¡¼­ Æ÷ÀÎÅ͸¦ Á» ´õ ¾ÈÀüÇÏ°Ô ¾µ ¼ö ÀÖ´Â ÀåÄ¡¸¦ Á¦°øÇÒ ÇÊ¿ä°¡ Àִµ¥ ±×°ÍÀÌ ¹Ù·Î constÀÌ´Ù.

ÁßÇü±Þ ½Â¿ëÂ÷ÀÇ ¹®Â¦¿¡´Â ¾È¿¡¼­ ¹®À» ¿­Áö ¸øÇϵµ·Ï ¹Û¿¡¼­ Àá±×´Â ÀåÄ¡°¡ Àִµ¥ ÀÌ ÀåÄ¡´Â ÁÖ·Î ¾Æµ¿µéÀ» º¸È£Çϱâ À§ÇØ Á¸ÀçÇÑ´Ù. ¾ÆÀ̵éÀÌ ÁÖÇàÁß¿¡ Â÷¹®À» ¿­¾î¼­ ¹ÛÀ¸·Î ¶³¾îÁö¸é µ¹ÀÌų ¼ö ¾ø´Â »ç°í°¡ ¹ß»ýÇÒ ¼ö Àֱ⠶§¹®¿¡ Ãâ¹ßÀü¿¡ ¹Û¿¡¼­ ¹®À» Àá±Û ¼ö ÀÖ´Ù. ¹°·Ð ¾Æºü°¡ Ãâ¹ßÀü¿¡ "´Þ¸®´Â Áß¿¡ Àý´ë ¹®À» ¿­¾î¼­´Â ¾ÈµÇ"ÇÏ°í ÁÖÀǸ¦ ÁÙ ¼öµµ ÀÖÁö¸¸ Àå³­²Ù·¯±âµé¿¡°Ô´Â ÀÌ·± ¸»ÀÌ ¿ÀÈ÷·Á ´õ À§ÇèÇÒ ¼öµµ ÀÖ´Ù. ÀÌ ÀåÄ¡´Â ¾ÆÀ̵éÀÇ ÀÚÀ¯¸¦ ±¸¼ÓÇϱâ À§ÇÑ °ÍÀÌ ¾Æ´Ï¶ó Ȥ½Ã¶óµµ ÀÖÀ»Áö ¸ð¸£´Â ½Ç¼ö³ª ¹«¸ðÇÑ È£±â½ÉÀ¸·ÎºÎÅÍ ¼ÒÁßÇÑ ¾ÆÀ̵éÀÇ »ý¸íÀ» ÁöÅ°±â À§ÇÑ °ÍÀÌ´Ù. const´Â ÄÄÆÄÀÏ·¯°¡ ¹Ì¼÷·Ã °³¹ßÀÚ¸¦ À§ÇØ Á¦°øÇÏ´Â ÀÏÁ¾ÀÇ ¾ÈÀü ÀåÄ¡¶ó°í ÇÒ ¼ö ÀÖ´Ù.

const´Â Àб⸸ °¡´ÉÇÑ Àбâ Àü¿ë Æ÷ÀÎÅ͸¦ Á¤ÀÇÇÒ ¼ö ÀÖµµ·Ï ÇÔÀ¸·Î½á Æ÷ÀÎÅ͸¦ À߸ø Á¶ÀÛÇÏ´Â ½Ç¼ö¸¦ ÄÄÆÄÀÏ·¯°¡ ¹ß°ßÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. ±¸Á¶Ã¼¸¦ ÇÔ¼öÀÇ Àμö·Î ³Ñ±æ ¶§´Â °ªÀ¸·Î ³Ñ±â´Â °Íº¸´Ù Æ÷ÀÎÅÍ·Î ³Ñ±â´Â °ÍÀÌ ÈξÀ ´õ È¿À²ÀûÀε¥ ÀÌ·¸°Ô Çϸé ÂüÁ¶ È£ÃâÀ̹ǷΠÇÔ¼ö ³»ºÎ¿¡¼­ ½ÇÀμö¸¦ º¯°æÇÒ ¼ö ÀÖ¾î À§ÇèÇØÁø´Ù. ÀÌ°ÍÀ» ±ÝÁöÇÏ°í ½ÍÀ» ¶§ Àбâ Àü¿ëÀÇ »ó¼ö Áö½Ã Æ÷ÀÎÅÍ·Î Àü´ÞÇÑ´Ù. 4¹ÙÀÌÆ®¸¸ Àü´ÞµÇ¹Ç·Î ¼Óµµ°¡ ºü¸£°í ÇÔ¼ö°¡ ½ÇÀμö¸¦ ÀÐÀ» ¼ö¸¸ ÀÖÀ¸¹Ç·Î ¾ÈÀüÇÏ´Ù. 13ÀåÀÇ OutFriend ÇÔ¼ö´Â const tag_Friend *pf¸¦ ¹Þ´Â °ÍÀÌ °¡Àå ÀÌ»óÀûÀÌ´Ù. ÄÄÆÄÀÏ·¯´Â const Æ÷ÀÎÅÍÀÇ ¾ÈÀü¼ºÀ» ³ôÀ̱â À§ÇØ const Æ÷ÀÎÅÍ¿Í ÀÏ¹Ý Æ÷ÀÎÅͳ¢¸®ÀÇ ´ëÀÔ¿¡ ´ëÇØ ¾ö°ÝÇÑ ±ÔÄ¢À» Àû¿ëÇÑ´Ù. ´ÙÀ½ ¿¹Á¦¸¦ º¸ÀÚ.

 

¿¹ Á¦ : ConstAssign

#include <Turboc.h>

 

void main()

{

     int ar[5]={1,2,3,4,5};

 

     int *pi1=&ar[0];

     const int *pi2;

 

     pi2=pi1;             // °¡´É

     pi1=pi2;             // ºÒ°¡´É

     pi1=(int *)pi2;          // °¡´ÉÇÏÁö¸¸ ¹Ù¶÷Á÷ÇÏÁö ¾Ê´Ù.

}

 

pi1Àº ÀÏ¹Ý Æ÷ÀÎÅÍÀ̸ç ar[0]¸¦ °¡¸®Å°µµ·Ï ÃʱâÈ­µÇ¾ú°í pi2´Â »ó¼ö Áö½Ã Æ÷ÀÎÅÍÀÌ´Ù. ÀÌ »óÅ¿¡¼­ pi2°¡ pi1ÀÇ ¹øÁö¸¦ ´ëÀÔ¹Þ´Â °ÍÀº °¡´ÉÇÏ´Ù. »ó¼ö Áö½Ã Æ÷ÀÎÅͷδ ´ë»óü¸¦ ÀÐÀ» ¼ö¸¸ Àֱ⠶§¹®¿¡ Àб⠾²±â°¡ ¸ðµÎ °¡´ÉÇÑ pi1 ´ë»óüÀÇ ¹øÁö¸¦ ´ëÀԹ޾Ƶµ ¾Æ¹« ¹®Á¦°¡ ¾ø´Ù.

±×·¯³ª ±× ¹Ý´ë´Â Çã°¡µÇÁö ¾Ê´Âµ¥ ÀÏ¹Ý Æ÷ÀÎÅÍ pi1ÀÌ »ó¼ö Áö½Ã Æ÷ÀÎÅÍ pi2ÀÇ ¹øÁö¸¦ ´ëÀÔ¹ÞÀ» ¼ö´Â ¾ø´Ù. ¸¸¾à ÀÌ°ÍÀÌ Çã°¡µÈ´Ù¸é pi2°¡ °¡¸®Å°´Â »ó¼ö ´ë»óü¸¦ pi1À» ÅëÇØ °£Á¢ÀûÀ¸·Î º¯°æÇÏ´Â °ÍÀÌ °¡´ÉÇØÁö¸ç ÀÌ·¸°Ô µÇ¸é »ó¼ö Áö½Ã Æ÷ÀÎÅ͸¦ Áö¿øÇÏ´Â Àǹ̰¡ ¾ø¾îÁø´Ù. »ó¼ö ´ë»óü¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ¿Í µ¿ÀÏÇÑ Å¸ÀÔÀÇ ÀÏ¹Ý Æ÷ÀÎÅ͸¦ ¼±¾ðÇÑ ÈÄ ÀÌ Æ÷ÀÎÅÍ·Î »ó¼ö ´ë»óüÀÇ °ªÀ» ¹Ù²Ü ¼ö ÀÖ´Ù¸é ´ë»óü¸¦ Á¦´ë·Î º¸È£ÇÒ ¼ö ¾øÀ¸¸ç ±×·¡¼­ »ó¼ö Áö½Ã Æ÷ÀÎÅ͸¦ ÀÏ¹Ý Æ÷ÀÎÅÍ¿¡ ´ëÀÔÇÏ´Â °ÍÀº ±ÝÁöµÇ¾î ÀÖ´Ù.

¸¸¾à ÀÏ¹Ý Æ÷ÀÎÅÍ°¡ Á¤ »ó¼ö Æ÷ÀÎÅÍÀÇ ¹øÁö¸¦ ´ëÀÔ¹Þµµ·Ï ÇÏ°í ½Í´Ù¸é ij½ºÆ® ¿¬»êÀÚ¸¦ »ç¿ëÇÒ ¼ö´Â ÀÖ´Ù. »ó¼ö Áö½Ã Æ÷ÀÎÅÍ Å¸ÀÔ(const int *)À» °­Á¦·Î ÀÏ¹Ý Æ÷ÀÎÅÍ Å¸ÀÔ(int *)À¸·Î ij½ºÆÃÇÏ¿© ´ëÀÔÇϸé ÀÏ´Ü ´ëÀÔÀº °¡´ÉÇÏ´Ù. ij½ºÆ® ¿¬»êÀÚ±îÁö µ¿¿øÇؼ­ ŸÀÔÀ» ¹Ù²Ù°íÀÚ ÇÑ´Ù¸é ÄÄÆÄÀÏ·¯°¡ À̸¦ ±»ÀÌ ¸»¸®Áö´Â ¾Ê´Â´Ù. ¹°·Ð ÀÌ·± ÄÚµå´Â ¹Ù¶÷Á÷ÇÏÁö ¾ÊÀ¸¸ç ²À ÇÊ¿äÇÒ ¶§¸¸ È®½ÇÇÏ°Ô ¾ÈÀüÇÏ´Ù´Â °ËÁõÀ» ÇÑ ÈÄ »ç¿ëÇØ¾ß ÇÑ´Ù.

const ÁöÁ¤Àº ÄÄÆÄÀÏ Å¸ÀÓ¿¡ ÄÄÆÄÀÏ·¯¿¡ ÀÇÇØ Áö¿øµÈ´Ù. ÄÄÆÄÀÏ·¯´Â º¯¼öÀÇ »ó¼ö¼ºÀ» º¸°í º¯°æÇÒ ¼ö ¾ø´Â °ªÀ» º¯°æÇÏ´Â Äڵ忡 ´ëÇØ »çÁ¤¾øÀÌ ¿¡·¯ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÑ´Ù. ±×·¡¼­ º¸ÅëÀÇ Á¤»óÀûÀÎ ¹æ¹ýÀ¸·Î´Â »ó¼ö¸¦ º¯°æÇÒ ¼ö ¾ø´Ù. ±×·¸´Ù¸é Á¤»óÀûÀÌÁö ¸øÇÑ º¯Ä¢ ÄÚµå·Î´Â »ó¼ö¸¦ º¯°æÇÒ ¼öµµ ÀÖ´Ù´Â ¾ê±âÀε¥ ·±Å¸ÀÓ¿¡ »ó¼öÀÇ Æ÷ÀÎÅÍ·Î °£Á¢ÀûÀ¸·Î °ªÀ» º¯°æÇÏ´Â °ÍÀº °¡´ÉÇÏ´Ù. Á¶±Ý ¿±±â½º·´±â´Â ÇÏÁö¸¸ ÀÌ¿Õ ¿¬±¸ÇÏ´Â ±è¿¡ Æ÷ÀÎÅÍ¿¡ ÀÇÇÑ °­Á¦ º¯°æÀ» Å×½ºÆ®ÇØ º¸ÀÚ.

 

¿¹ Á¦ : ConstTest

#include <Turboc.h>

 

void main()

{

     const int i=2;

     int *pi=(int *)&i;

     *pi=3;

     printf("i=%d\n",i);

     printf("*pi=%d\n",*pi);

 

     const double d=1.0;

     double *pd=(double *)&d;

     *pd=2.3;

     printf("d=%f\n",d);

     printf("*pd=%f\n",*pd);

}

 

int, double Çü º¯¼ö¸¦ ¼±¾ðÇÏ°í ºñ»ó¼ö Æ÷ÀÎÅÍ¿¡ °­Á¦·Î ÀÌ »ó¼öÀÇ ¹øÁö¸¦ ´ëÀÔÇÑ ÈÄ Æ÷ÀÎÅÍ·Î °ªÀ» º¯°æÇØ º¸¾Ò´Ù. ÀÌ·± µ¿ÀÛÀº ½ºÆÑ¿¡ Á¤ÀǵǾî ÀÖÁö ¾ÊÀ¸¹Ç·Î °á°ú´Â ÄÄÆÄÀÏ·¯¸¶´Ù ´Ù¸£´Ù. ´ÙÀ½Àº ºñÁÖ¾ó C++ÀÇ ½ÇÇà °á°úÀε¥ ´Ù¼Ò È¥¶õ½º·¯¿ö º¸ÀδÙ.

 

i=2

*pi=3

d=2.300000

*pd=2.300000

 

double°ªÀº ¹Ù²îÁö¸¸ int°ªÀº ¹Ù²îÁö ¾ÊÀº °Íó·³ º¸ÀδÙ. ±×·¯³ª ³»ºÎ¸¦ µé¿©´Ù º¸¸é intµµ ½ÇÁ¦·Î´Â °ªÀÌ ¹Ù²îÁö¸¸ »ó¼ö ÂüÁ¶¹®ÀÌ ¿ø·¡ Á¤ÀÇµÈ »ó¼ö°ªÀ» °ð¹Ù·Î »ç¿ëÇϵµ·Ï ÄÄÆÄÀÏÇÏ´Â °ÍÀÌ´Ù. gcc·Î ÀÌ ¿¹Á¦¸¦ Å×½ºÆ®ÇØ º¸¸é µÑ ´Ù ¹Ù²îÁö ¾Ê´Â´Ù. const ÁöÁ¤µÈ »ó¼ö¸¦ Æ÷ÀÎÅÍ·Î °­Á¦ º¯°æÇÒ °æ¿ìÀÇ µ¿ÀÛ¿¡ ´ëÇؼ­´Â Á¤ÀǵǾî ÀÖÁö ¾ÊÀ¸¹Ç·Î ¾î¶² ÄÄÆÄÀÏ·¯°¡ Ʋ·È´Ù´Â ¾ê±â´Â ÇÒ ¼ö ¾ø´Ù.

ÄÄÆÄÀÏ·¯ °³¹ßÀÚµéÀº ½ºÆÑ ¹®¼­´ë·Î ÄÄÆÄÀÏ·¯¸¦ ÀÛ¼ºÇÒ »ÓÀ̹ǷΠÁ¤ÀǵÇÁö ¾ÊÀº Äڵ尡 ¾î¶»°Ô ÄÄÆÄÀϵÉÁö´Â ¾Ë ¼ö ¾ø´Â °ÍÀÌ´Ù. µû¶ó¼­ ¿ì¸®´Â ÀÌ·± À̽ļºÀÌ ¾ø´Â Äڵ带 ÀÛ¼ºÇؼ­´Â ¾ÈµÈ´Ù. ´ÙÀ½Àº Àμö·Î Àü´ÞµÈ »ó¼ö Áö½Ã Æ÷ÀÎÅÍÀÇ »ó¼ö¼ºÀ» º¯°æÇÏ¿© ½ÇÀμö¸¦ º¯°æÇØ º¸ÀÚ. ÇÔ¼ö´Â ÀÓÀÇÀÇ ½ÇÀμö¿¡ ´ëÇØ µ¿ÀÛÇÒ ¼ö ÀÖ¾î¾ß ÇϹǷΠÄÄÆÄÀÏ·¯°¡ ¿ø·¡ÀÇ »ó¼ö°ªÀ» ƯÁ¤°ªÀ¸·Î °¡Á¤ÇÒ ¼ö ¾ø¾î ¾ÕÀÇ ¿¹Á¦¿Í´Â È¿°ú°¡ Á¶±Ý ´Ù¸£´Ù.

 

¿¹ Á¦ : ConstTest2

#include <Turboc.h>

 

void func(const int *ai)

{

     // *ai=3;

     int *pi;

     pi=(int *)ai;

     *pi=3;

}

 

void main()

{

     int i=2;

     func(&i);

     printf("%d\n",i);

}

 

func´Â const int *¸¦ Àü´Þ¹ÞÀ¸¹Ç·Î *ai=3 ½ÄÀ¸·Î ÀÌ Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â ³»¿ëÀ» Á÷Á¢ º¯°æÇÏ´Â °ÍÀº ´ç¿¬È÷ ºÒ¹ýÀÌ´Ù. ±×·¯³ª ºñ»ó¼ö Æ÷ÀÎÅÍ pi·Î °­Á¦ º¯°æÇÏ´Â °ÍÀº °¡´ÉÇÏ´Ù. ÄÄÆÄÀÏ·¯´Â pi°¡ °¡¸®Å°´Â ³»¿ëÀÌ ¼±¾ðÇÒ ¶§ºÎÅÍ »ó¼öÀÎÁö ¾Æ´Ï¸é ½ÇÀμö´Â ºñ»ó¼öÀε¥ ÇÔ¼ö·Î Àü´ÞµÉ ¶§¸¸ »ó¼öÀÎÁö´Â ÀüÇô ºÐ°£ÇÒ ¼ö ¾øÀ¸¹Ç·Î *pi=3 È£Ãâ¿¡ ´ëÇØ ¹«Á¶°Ç °ªÀ» º¯°æÇÒ ¼ö¹Û¿¡ ¾ø´Ù. ÀÌ ÄÚµå´Â °ÅÀÇ ´ëºÎºÐÀÇ ÄÄÆÄÀÏ·¯¿¡ ´ëÇؼ­ µ¿ÀÛÇÑ´Ù.