Áö±Ý±îÁö Á¤¼öÇü°ú ±¸Á¶Ã¼¿¡ ´ëÇØ ·¹ÆÛ·±½º¸¦ ¼±¾ðÇÏ°í »ç¿ëÇØ º¸¾Ò´Âµ¥ Æ÷ÀÎÅÍ¿¡ ´ëÇÑ ·¹ÆÛ·±½ºµµ ¼±¾ðÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ ¿¹Á¦´Â 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¿¡ ´ëÇÑ ·¹ÆÛ·±½º°¡ ÇÊ¿äÇÏ¸é °¢°¢ µû·Î ·¹ÆÛ·±½º¸¦ ¼±¾ðÇØ¾ß ÇÑ´Ù.
¨ê ºñÆ® Çʵ忡 ´ëÇÑ ·¹ÆÛ·±½ºµµ ¼±¾ðÇÒ ¼ö ¾ø´Ù. ºñÆ® Çʵå´Â ÁÖ¼Ò¸¦ °¡ÁöÁö ¾Ê±â ¶§¹®¿¡ Æ÷ÀÎÅÍÀÇ ´ë»óü°¡ µÉ ¼ö ¾øÀ¸¸ç ¸¶Âù°¡Áö·Î ·¹ÆÛ·±½ºÀÇ ÂüÁ¶ ´ë»óÀÌ µÉ ¼öµµ ¾ø´Ù.