15-4-´Ù.·¹ÆÛ·±½ºÀÇ ´ë»óü

Áö±Ý±îÁö Á¤¼öÇü°ú ±¸Á¶Ã¼¿¡ ´ëÇØ ·¹ÆÛ·±½º¸¦ ¼±¾ðÇÏ°í »ç¿ëÇØ º¸¾Ò´Âµ¥ Æ÷ÀÎÅÍ¿¡ ´ëÇÑ ·¹ÆÛ·±½ºµµ ¼±¾ðÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ ¿¹Á¦´Â 10Àå¿¡¼­ ¸¸µé¾î º¸¾Ò´ø ÀÌÁß Æ÷ÀÎÅÍ ¿¹Á¦¸¦ ·¹ÆÛ·±½º·Î ¹Ù²ã º» °ÍÀÌ´Ù.

 

¿¹ Á¦ : PtrRef

#include <Turboc.h>

 

void InputName(char *&Name)

{

     Name=(char *)malloc(12);

     strcpy(Name,"Cabin");

}

 

void main()

{

     char *Name;

 

     InputName(Name);

     printf("À̸§Àº %sÀÔ´Ï´Ù\n",Name);

     free(Name);

}

 

char *&NameÀμö°¡ Æ÷ÀÎÅÍÀÇ ·¹ÆÛ·±½ºÀÌ´Ù. TÇüÀÇ ·¹ÆÛ·±½º´Â T &À̸ç char * ÀÚü°¡ ÇϳªÀÇ Å¸ÀÔÀ̹ǷΠÀÌ Å¸ÀÔ¿¡ ´ëÇÑ ·¹ÆÛ·±½º´Â char *&°¡ µÈ´Ù. char &*°¡ ¾Æ´ÔÀ» ÁÖÀÇÇϵµ·Ï ÇÏÀÚ. 10ÀåÀÇ ¿¹Á¦¿¡ ºñÇØ 2Áß Æ÷ÀÎÅ͸¦ ¾²Áö ¾Ê¾Æ ÇÔ¼ö ³»ºÎ°¡ ±ò²ûÇϸç Á÷°üÀûÀ̶ó´Â ÀåÁ¡ÀÌ ÀÖ´Ù. Æ÷ÀÎÅÍ¿¡ ´ëÇÑ ·¹ÆÛ·±½º´Â ¹«Ã´ ½Ç¿ëÀûÀ̸ç Á¾Á¾ »ç¿ëµÈ´Ù.

º°·Î ±×·² ÀÏÀº ¾ø°ÚÁö¸¸ ÇÔ¼ö ·¹ÆÛ·±½º¶ó´Â °Íµµ ¼±¾ðÇÒ ¼ö ÀÖÀ¸¸ç ¹è¿­¿¡ ´ëÇÑ ·¹ÆÛ·±½ºµµ ¸¸µé ¼ö ÀÖ´Ù. ´ÙÀ½ ¿¹Á¦·Î ÀÌ µÎ °¡Áö¸¦ ¸ðµÎ Å×½ºÆ®ÇØ º¸ÀÚ.

 

¿¹ Á¦ : FuncRef

#include <Turboc.h>

 

int ar[5]={100,101,102,103,104};

 

void func(int a)

{

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

}

 

void main()

{

     void (&rf)(int)=func;      // ÇÔ¼ö ·¹ÆÛ·±½º

     int (&rar)[5]=ar;                // ¹è¿­ ·¹ÆÛ·±½º

 

     rf(rar[0]);

}

 

rf´Â Á¤¼öÇü Àμö Çϳª¸¦ ÃëÇÏ°í ¸®ÅϰªÀÌ ¾ø´Â ÇÔ¼ö¿¡ ´ëÇÑ ·¹ÆÛ·±½º·Î ¼±¾ðµÇ¾úÀ¸¸ç °°Àº ŸÀÔÀÇ ÇÔ¼ö func·Î ÃʱâÈ­µÇ¾ú´Ù. ±×·¡¼­ rf() È£Ãâ¹®ÀÌ °ð func() È£Ãâ¹®°ú °°¾ÆÁø´Ù. rarÀº Å©±â 5ÀÇ Á¤¼öÇü ¹è¿­ ·¹ÆÛ·±½º·Î ¼±¾ðµÇ¾úÀ¸¸ç °°Àº ŸÀÔÀÇ ar·Î ÃʱâÈ­µÇ¾î rar°ú arÀº °°Àº ¹è¿­À» °¡¸®Å²´Ù. °á±¹ À§ ¿¹Á¦¿¡¼­ »ç¿ëµÈ rf(rar[0]) È£Ãâ¹®Àº func(ar[0]) È£Ãâ¹®°ú °°´Ù°í ÇÒ ¼ö ÀÖ´Ù. º°¸íÀ» »ç¿ëÇß´Ù »ÓÀÌÁö ÇÔ¼ö¿Í ¹è¿­À» ¹Ù·Î »ç¿ëÇÑ °Í°ú º°¹Ý Â÷À̰¡ ¾ø´Ù. ÀÌ µÑÀº ¹®¹ýÀûÀ¸·Î °¡´ÉÀº ÇÏÁö¸¸ º°·Î ½Ç¿ë¼ºÀº ¾ø´Ù.

TÇüÀÌ ÀÖÀ» ¶§ TÇü Æ÷ÀÎÅͳª TÇü ¹è¿­Àº Ç×»ó ¼±¾ðÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª ·¹ÆÛ·±½ºÀÇ °æ¿ì´Â ÀÌ ¸íÁ¦°¡ ¼º¸³µÇÁö ¾Ê´Â´Ù. ÀÓÀÇÀÇ TÇü¿¡ ´ëÇØ T & ·¹ÆÛ·±½º ŸÀÔÀ» ¼±¾ðÇÒ ¼ö ÀÖÁö¸¸ ·¹ÆÛ·±½º¿¡ ´ëÇØ¼­ ÀÓÀÇÀÇ ¸ðµç ŸÀÔÀ» ´Ù ¸¸µé ¼ö ÀÖ´Â °ÍÀº ¾Æ´Ï´Ù. ¾î¶² °æ¿ì°¡ ¾ÈµÇ´ÂÁö Á¤¸®ÇØ º¸ÀÚ.

 

¨ç ·¹ÆÛ·±½º¿¡ ´ëÇÑ ·¹ÆÛ·±½º¸¦ ¼±¾ðÇÒ ¼ö ¾ø´Ù. ·¹ÆÛ·±½º°¡ º°¸íÀε¥ ÀÌ º°¸í¿¡ ´ëÇÑ ´Ù¸¥ º°¸íÀ» ¶Ç ¸¸µå´Â °ÍÀº ½Ç¿ëÀû °¡Ä¡°¡ ¾ø´Ù°í ÇÒ ¼ö ÀÖ´Ù. Æ÷ÀÎÅÍ´Â 2Áß Æ÷ÀÎÅÍ ¼±¾ðÀÌ °¡´ÉÇÏÁö¸¸ 2Áß ·¹ÆÛ·±½º¶ó´Â °ÍÀº ¼±¾ðÇÒ ¼ö ¾ø´Ù. ´ÙÀ½ ¿¹¸¦ º¸ÀÚ.

 

int i;

int &ri=i;

int &rri=ri;

 

ri´Â i¿¡ ´ëÇÑ ·¹ÆÛ·±½º·Î ¼±¾ðµÇ¾ú°í rri´Â ri¿¡ ´ëÇÑ ·¹ÆÛ·±½º·Î ¼±¾ðµÇ¾ú´Ù. À̶§ rri°¡ 2Áß ·¹ÆÛ·±½ºÀÎ °Íó·³ º¸ÀÌÁö¸¸ rri´Â ´Ü¼ø ·¹ÆÛ·±½º¿¡ ºÒ°úÇÏ´Ù. ri°¡ iÀ̹ǷΠrri´Â iÀÇ ¶Ç ´Ù¸¥ º°¸íÀÏ »ÓÀÌ¸ç °á±¹ rri¿Í ri´Â °°Àº ´ë»óÀ» °¡¸®Å°´Â ´Ù¸¥ º°¸íÀÎ °ÍÀÌ´Ù. int &&rri=i; °°Àº ¼±¾ð¹®Àº ÇÊ¿äÇÏÁöµµ ¾ÊÀ¸¸ç ÄÄÆÄÀÏ·¯¿¡ ÀÇÇØ ¿¡·¯·Î 󸮵ȴÙ.

¨è ·¹ÆÛ·±½º¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ ¼±¾ðÇÒ ¼ö ¾ø´Ù. ´ÙÀ½ Äڵ带 º¸ÀÚ.

 

int i;

int &ri=i;

int &*pri=&ri;      // ¿¡·¯

 

·¹ÆÛ·±½º¿¡ ´ëÇÑ Æ÷ÀÎÅÍ pri¸¦ ¼±¾ðÇϰíÀÚ Çߴµ¥ ÄÄÆÄÀÏ·¯´Â À̸¦ ¿¡·¯·Î ó¸®ÇÑ´Ù. °³³äÀûÀ¸·Î ·¹ÆÛ·±½º¿¡ ´ëÇÑ Æ÷ÀÎÅÍ´Â ·¹ÆÛ·±½ºÀÇ ´ë»óü¿¡ ´ëÇÑ Æ÷ÀÎÅÍÇüÀ̹ǷΠ°ð ´Ü¼ø Æ÷ÀÎÅÍ¿Í °°À¸¸ç ±»ÀÌ ·¹ÆÛ·±½ºÀÇ Æ÷ÀÎÅÍÇüÀ» Á¤ÀÇÇØ¾ßÇÒ Çʿ䰡 ¾ø´Ù. int *pi=&ri¶ó´Â ¼±¾ðÀº °¡´ÉÇÏ´Ù.

¨é ·¹ÆÛ·±½ºÀÇ ¹è¿­µµ ¼±¾ðÇÒ ¼ö ¾ø´Ù. TÇü ¹è¿­À̶õ °ð TÇü Æ÷ÀÎÅÍÀε¥ ·¹ÆÛ·±½º¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ ¼±¾ðÇÒ ¼ö ¾øÀ¸¹Ç·Î ¹è¿­µµ ¼±¾ðÇÒ ¼ö ¾ø´Ù.

 

int i,j;

int &ra[2]={i,j};       // ¿¡·¯

 

i¿Í j¿¡ ´ëÇÑ ·¹ÆÛ·±½º°¡ ÇÊ¿äÇÏ¸é °¢°¢ µû·Î ·¹ÆÛ·±½º¸¦ ¼±¾ðÇØ¾ß ÇÑ´Ù.

¨ê ºñÆ® Çʵ忡 ´ëÇÑ ·¹ÆÛ·±½ºµµ ¼±¾ðÇÒ ¼ö ¾ø´Ù. ºñÆ® Çʵå´Â ÁÖ¼Ò¸¦ °¡ÁöÁö ¾Ê±â ¶§¹®¿¡ Æ÷ÀÎÅÍÀÇ ´ë»óü°¡ µÉ ¼ö ¾øÀ¸¸ç ¸¶Âù°¡Áö·Î ·¹ÆÛ·±½ºÀÇ ÂüÁ¶ ´ë»óÀÌ µÉ ¼öµµ ¾ø´Ù.