13-3-³ª.±¸Á¶Ã¼ ´ëÀÔ

±¸Á¶Ã¼°¡ ¹è¿­°ú ´Ù¸¥ °¡Àå Å« Â÷ÀÌÁ¡Àº ´ëÀÔÀÌ °¡´ÉÇÏ´Ù´Â Á¡ÀÌ´Ù. ´ÙÀ½ ÄÚµå´Â ÃʱâÈ­µÈ ±¸Á¶Ã¼ Friend1ÀÇ ¸â¹öµéÀ» Friend2¿¡ ±×´ë·Î ´ëÀÔÇÑ´Ù.

 

tag_Friend Friend1={"Àå´Þ»ó", 19, 180.0 };

tag_Friend Friend2;

Friend2=Friend1;

 

i=j¿Í °°ÀÌ Á¤¼öÇü º¯¼ö³¢¸® ´ëÀÔÇϸé i°¡ j¿Í ¶È°°Àº °ªÀ» °¡ÁöµíÀÌ ±¸Á¶Ã¼¸¦ ´ëÀÔÇÏ¸é µÎ ±¸Á¶Ã¼ÀÇ ¸ðµç ¸â¹ö´Â °°Àº °ªÀ» °¡Áö°Ô µÉ °ÍÀÌ´Ù. ¹°·Ð ´ëÀÔ ¿¬»êÀÚÀÇ ÁÂ, ¿ìº¯Àº µ¿ÀÏÇÑ Å¸ÀÔÀÇ ±¸Á¶Ã¼¿©¾ß ÇÑ´Ù. ±¸Á¶Ã¼³¢¸®ÀÇ ´ëÀÔ ¿¬»ê µ¿ÀÛÀº ±¸Á¶Ã¼ÀÇ ±æÀ̸¸Å­ ¸Þ¸ð¸® º¹»ç·Î Á¤ÀǵǾî Àִµ¥ Friend2=Friend1´ëÀÔ¹®Àº ´ÙÀ½ ÄÚµå¿Í ±â´É»ó µ¿ÀÏÇÏ´Ù.

 

memcpy(&Friend2,&Friend1,sizeof(Friend1));

 

Friend1 ¹øÁö¿¡¼­ºÎÅÍ sizeof(Friend1) ¹ÙÀÌÆ®¸¸Å­ Friend2¹øÁö·Î º¹»çÇÏ´Â °ÍÀÌ´Ù. µû¶ó¼­ ±¸Á¶Ã¼°¡ ¾Æ¹«¸® Å©´õ¶óµµ ´ëÀÔ¸¸ ÇÏ¸é ¸ðµç ¸â¹ö°ªÀ» ÇѲ¨¹ø¿¡ º¹»çÇÒ ¼ö ÀÖÀ¸¸ç º¹»ç ¼Óµµµµ ºñ±³Àû ºü¸¥ ÆíÀÌ´Ù. ´ëÀÔÀ» ÇßÀ¸´Ï Á¿캯ÀÌ ¶È°°¾ÆÁö´Â °ÍÀº ´ç¿¬ÇÑ °Ô ¾Æ´Ñ°¡¶ó°í »ý°¢ÇÏ°ÚÁö¸¸ °áÄÚ ´ç¿¬ÇÏ´Ù°í¸¸ »ý°¢ÇÒ °ÍÀÌ ¾Æ´Ï´Ù. ¹è¿­ÀÇ °æ¿ì´Â ŸÀÔ°ú Å©±â°¡ °°´õ¶óµµ ´ëÀÔ ¿¬»êÀÚ·Î »çº»À» ¸¸µé ¼ö ¾ø´Ù. Áï, ´ÙÀ½ ÄÚµå´Â ÄÄÆÄÀϵÇÁö ¾Ê´Â´Ù.

 

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

int ar2[5];

ar2=ar1;                                // ´ëÀÔ ÀÚü°¡ ¾ÈµÊ

 

¹è¿­ÀÇ À̸§Àº ½ÃÀÛ ¹øÁö¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ »ó¼öÀ̱⠶§¹®¿¡ Áº¯°ªÀÌ ¾Æ´Ï¸ç ´ëÀÔ½ÄÀÇ Áº¯¿¡ ³õÀÏ ¼ö ¾ø´Ù. ¹è¿­³¢¸® ²À ´ëÀÔÀ» ÇÏ·Á¸é ·çÇÁ¸¦ µ¹¸é¼­ ¹è¿­ ¿ä¼Ò¸¦ ÀÏÀÏÀÌ ´ëÀÔÇÏ´Â ¼ö¹Û¿¡ ¾ø´Ù. ÇÏÁö¸¸ ±¸Á¶Ã¼¿¡ ´ëÇؼ­´Â Ưº°ÇÏ°Ô ´ëÀÔÀ» Çã¿ëÇϴµ¥ ÄÄÆÄÀÏ·¯°¡ ±¸Á¶Ã¼ÀÇ À̸§À» Áº¯°ªÀ¸·Î ÀÎÁ¤Çϱ⠶§¹®ÀÌ´Ù. ±¸Á¶Ã¼°¡ Ŭ °æ¿ì º¹»ç ½Ã°£ÀÌ ¿À·¡ °É¸®´Â ¸·´ëÇÑ ºñ¿ëÀÌ µå´Âµ¥µµ ºÒ±¸ÇÏ°í Áß±Þ ¾ð¾îÀÎ C°¡ ¼º´É ÀúÇϸ¦ °¨¼öÇØ °¡¸é¼­ ´ëÀÔÀ» Çã¿ëÇϱ⠶§¹®¿¡ Ưº°ÇÏ´Ù°í ÇÏ´Â °ÍÀÌ´Ù.

±¸Á¶Ã¼´Â ´ëÀÔ °¡´ÉÇϱ⠶§¹®¿¡ ÇÔ¼öÀÇ Àμö³ª ¸®ÅÏ°ªÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÇÔ¼ö È£Ãâ½Ã Çü½Ä Àμö°¡ ½ÇÀμö·Î Àü´ÞµÇ´Â °úÁ¤Àº ÀÏÁ¾ÀÇ ´ëÀÔ ¿¬»êÀ̱⠶§¹®¿¡ ±¸Á¶Ã¼ ±× ÀÚü¸¦ Àμö·Î »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀÌ´Ù. ¹è¿­Àº ´ëÀÔÀÌ ¾ÈµÇ±â ¶§¹®¿¡ ¹è¿­ ÀÚü¸¦ Àμö·Î Àü´ÞÇÒ ¼ö´Â ¾ø°í ¹è¿­À» °¡¸®Å°´Â Æ÷ÀÎÅ͸¦ Àü´ÞÇØ¾ß ÇÏ´Â °Í°ú´Â ±¸ºÐµÈ´Ù. ´ÙÀ½ ¿¹Á¦ÀÇ OutFriend ÇÔ¼ö´Â ±¸Á¶Ã¼¸¦ Àμö·Î Àü´Þ¹Þ¾Æ ÀÌ ±¸Á¶Ã¼ÀÇ ¸ðµç ¸â¹ö¸¦ Ãâ·ÂÇÑ´Ù.

 

¿¹ Á¦ : StructArg

#include <Turboc.h>

 

struct tag_Friend {

     char Name[10];

     int Age;

     double Height;

};

 

void OutFriend(tag_Friend f)

{

     printf("À̸§=%s, ³ªÀÌ=%d, Å°=%.1f\n",f.Name,f.Age,f.Height);

}

 

void main()

{

     tag_Friend Friend={"±è»óÇü", 30, 180.0 };

     OutFriend(Friend);

}

 

OutFriend ÇÔ¼öÀÇ Àμö ¸ñ·Ï¿¡ tag_Friend ŸÀÔÀÇ Çü½ÄÀμö f°¡ ¼±¾ðµÇ¾î ÀÖ°í main ÇÔ¼ö¿¡¼­ OutFriend¸¦ È£ÃâÇÒ ¶§ Friend ±¸Á¶Ã¼ ÀÚü¸¦ Àü´ÞÇß´Ù. ÇÔ¼ö È£Ãâ °úÁ¤¿¡¼­ ½ÇÀμö Friend´Â Çü½ÄÀμö f·Î º¹»çµÇ¸ç OutFriend´Â Çü½ÄÀμö f·ÎºÎÅÍ FriendÀÇ ¸ðµç ¸â¹ö°ªÀ» ÀÐÀ» ¼ö ÀÖ´Ù.

±¸Á¶Ã¼¸¦ ÇÔ¼öÀÇ Àμö·Î Àü´ÞÇÒ ¼ö ÀÖ´Ù´Â °ÍÀº ±²ÀåÈ÷ Æí¸®ÇÑ ±â´ÉÀÌ´Ù. ¸¶Ä¡ Á¤¼ö³ª ½Ç¼ö¸¦ »ç¿ëÇϵíÀÌ º¯¼ö ÀÚü¸¦ ±×´ë·Î Àü´ÞÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù. ±×·¯³ª ½ÇÁ¦·Î ±¸Á¶Ã¼¸¦ ÇÔ¼öÀÇ Àμö·Î Á÷Á¢ »ç¿ëÇÏ´Â °æ¿ì´Â º°·Î ¾ø´Ù. ±¸Á¶Ã¼°¡ Ä¿Áö¸é Àμö Àü´Þ¿¡ ±×¸¸Å­ ¸¹Àº ½Ã°£À» ÇÊ¿ä·Î ÇÏ°í ¸Þ¸ð¸®µµ ¸¹ÀÌ ¼Ò¸ðÇϱ⠶§¹®¿¡ ±¸Á¶Ã¼º¸´Ù´Â Æ÷ÀÎÅ͸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀÌ ´õ È¿À²ÀûÀÌ´Ù. ÀÌ·² ¶§´Â ´ç¿¬È÷ Æ÷ÀÎÅ͸¦ »ç¿ëÇØ¾ß ÇÑ´Ù. ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇØ º¸ÀÚ.

 

void OutFriend(tag_Friend *pf)

{

     printf("À̸§=%s, ³ªÀÌ=%d, Å°=%.1f\n",pf->Name,pf->Age,pf->Height);

}

 

void main()

{

     tag_Friend Friend={"±è»óÇü", 30, 180.0 };

     OutFriend(&Friend);

}

 

OutFriend ÇÔ¼ö°¡ tag_Friend *ÇüÀÇ pf¸¦ Àü´Þ¹Þµµ·Ï ÇßÀ¸¸ç ÇÔ¼ö ³»ºÎ¿¡¼­´Â ¸â¹ö ¿¬»êÀÚ ´ë½Å Æ÷ÀÎÅÍ ¸â¹ö ¿¬»êÀÚ¸¦ »ç¿ëÇß´Ù. main ÇÔ¼ö¿¡¼­ OutFriend¸¦ È£ÃâÇÒ ¶§´Â ±¸Á¶Ã¼ ÀÚü¸¦ Àü´ÞÇÏÁö ¾Ê°í ´ë½Å ±¸Á¶Ã¼ÀÇ ¹øÁö &Friend¸¦ Àü´ÞÇß´Ù. ±¸Á¶Ã¼ ÀÚü¸¦ Àü´ÞÇÏ´À³Ä ¾Æ´Ï¸é ±¸Á¶Ã¼¸¦ °¡¸®Å°´Â Æ÷ÀÎÅ͸¦ Àü´ÞÇÏ¿© °£Á¢ÀûÀ¸·Î ±¸Á¶Ã¼¸¦ ÂüÁ¶Çϵµ·Ï ÇÏ´À³ÄÀÇ Â÷ÀÌ°¡ Àִµ¥ ½ÇÇà °á°ú´Â ÀÏ´Ü µ¿ÀÏÇÏ´Ù.

ÇÏÁö¸¸ ¸î °¡Áö Â÷ÀÌÁ¡ÀÌ Á¸ÀçÇϴµ¥ ¿ì¼± Æ÷ÀÎÅ͸¦ ÅëÇØ ÂüÁ¶ È£ÃâÀ» ÇßÀ¸¹Ç·Î ÇÔ¼ö ³»ºÎ¿¡¼­ ±¸Á¶Ã¼¸¦ º¯°æÇÒ ¼ö ÀÖ´Ù. Çü½Ä Àμö°¡ ½ÇÀμöÀÇ »çº»ÀÌ ¾Æ´Ï¶ó ¹øÁö¸¦ ¾Ë°í ÀÖÀ¸¹Ç·Î -> ¿¬»êÀÚ·Î ½ÇÀμö ÀÚü¸¦ ÀÐ°í ¾µ ¼ö ÀÖ´Â °ÍÀÌ´Ù. ±×¸®°í ¼º´É»óÀ¸·Îµµ È®¿¬ÇÑ Â÷ÀÌ°¡ Àִµ¥ µÎ¸»ÇÒ ÇÊ¿ä¾øÀÌ Æ÷ÀÎÅ͸¦ Àü´ÞÇÏ´Â ¹æ½ÄÀÌ ÈξÀ ´õ ºü¸£´Ù. ±¸Á¶Ã¼´Â º¸Åë ¼ö½Ê ¹ÙÀÌÆ®ÀÌ°í Ä¿Áö¸é ¼ö¹é ¹ÙÀÌÆ® ÀÌ»óÀÌ µÉ ¼ö ÀÖÁö¸¸ Æ÷ÀÎÅÍ´Â ±â²¯ÇØ¾ß 4¹ÙÀÌÆ®¹Û¿¡ ¾ÈµÈ´Ù.

±¸Á¶Ã¼¸¦ Åë°·Î º¹»çÇÏ¿© Àü´ÞÇÏ´Â µ¥ °É¸®´Â ½Ã°£°ú 4¹ÙÀÌÆ®ÀÇ Æ÷ÀÎÅ͸¦ Àü´ÞÇÏ´Â µ¥ °É¸®´Â ½Ã°£Àº ºñ±³ÇØ º¸³ª ¸¶³ª´Ù. ±×·¡¼­ ±¸Á¶Ã¼¸¦ ÇÔ¼ö³¢¸® Àü´ÞÇØ¾ß ÇÒ ÇÊ¿ä°¡ ÀÖÀ» ¶§´Â º¸Åë Æ÷ÀÎÅ͸¦ »ç¿ëÇÑ´Ù. ´Ü, ±¸Á¶Ã¼°¡ ¾ÆÁÖ ÀÛ´Ù¸é °¡·É 10¹ÙÀÌÆ® Á¤µµ¹Û¿¡ ¾ÈµÈ´Ù¸é ÀÌ·± °æ¿ì´Â ¼º´É»óÀÇ ºÒÀÌÀÍÀÌ º°·Î ¾øÀ¸¹Ç·Î ±¸Á¶Ã¼¸¦ ±×³É ³Ñ±â´Â °ÍÀÌ ´õ Æí¸®ÇÏ´Ù.

±¸Á¶Ã¼°¡ Àμö·Î »ç¿ëµÉ ¼ö ÀÖ´Â °Íó·³ ¸®ÅÏ°ªÀ¸·Îµµ »ç¿ëµÉ ¼ö ÀÖ´Ù. ´ÙÀ½ ¿¹Á¦´Â ±¸Á¶Ã¼¸¦ ¸®ÅÏÇÏ´Â ÇÔ¼ö GetFriendÀÇ ¿¹ÀÌ´Ù.

 

¿¹ Á¦ : StructRet

#include <Turboc.h>

 

struct tag_Friend {

     char Name[10];

     int Age;

     double Height;

};

 

tag_Friend GetFriend()

{

     tag_Friend t;

 

     strcpy(t.Name,"¾Æ¹«°³");

     t.Age=22;

     t.Height=177.7;

     return t;

}

 

void main()

{

     tag_Friend Friend;

     Friend=GetFriend();

     printf("À̸§=%s, ³ªÀÌ=%d, Å°=%.1f\n",

          Friend.Name,Friend.Age,Friend.Height);

}

 

ÇÔ¼ö ³»ºÎ¿¡¼­ tag_FriendÇüÀÇ ±¸Á¶Ã¼ Áö¿ªº¯¼ö t¸¦ ¼±¾ðÇÑ ÈÄ ÀÌ ±¸Á¶Ã¼¿¡ Àû´çÈ÷ °ªÀ» ä¿ì°í Áö¿ªº¯¼ö ÀÚü¸¦ ¸®ÅÏÇß´Ù. Áö¿ªº¯¼ö´Â ÇÔ¼ö°¡ Á¾·áµÉ ¶§ »ç¶óÁö¹Ç·Î ÀÌ º¯¼ö¸¦ ¸®ÅÏÇÏ´Â °ÍÀÌ Á¶±Ý ÀÌ»óÇÏ°Ô º¸ÀÌ°ÚÁö¸¸ ÀÌ °æ¿ì´Â ¾ÈÀüÇÏ´Ù. ¿Ö³ÄÇÏ¸é ¸®ÅϵǴ °ªÀº Áö¿ªº¯¼ö ÀÚü°¡ ¾Æ´Ï¶ó Áö¿ªº¯¼öÀÇ º¹»çº»ÀÌ¸ç ¸®ÅϵǴ Áï½Ã ÀÌ °ªÀ» ´Ù¸¥ ±¸Á¶Ã¼°¡ ´ëÀԹޱ⠶§¹®ÀÌ´Ù. ¸¸¾à ´ëÀÔÀ» ¹ÞÁö ¾ÊÀ¸¸é ¸®ÅÏµÈ ±¸Á¶Ã¼´Â ¹ö·ÁÁø´Ù.

ÇÏÁö¸¸ ±¸Á¶Ã¼ Áö¿ªº¯¼öÀÇ Æ÷ÀÎÅ͸¦ ¸®ÅÏÇÏ´Â °ÍÀº ¾ÈµÈ´Ù. ´ÙÀ½°ú °°ÀÌ Áö¿ªº¯¼öÀÇ Æ÷ÀÎÅ͸¦ ¸®ÅÏÇϵµ·Ï ¿¹Á¦¸¦ ¼öÁ¤ÇØ º¸ÀÚ.

 

tag_Friend *GetFriend()

{

     tag_Friend t;

 

     strcpy(t.Name,"¾Æ¹«°³");

     t.Age=22;

     t.Height=177.7;

     return &t;

}

 

void main()

{

     tag_Friend *pFriend;

     pFriend=GetFriend();

     printf("À̸§=%s, ³ªÀÌ=%d, Å°=%.1f\n",

          pFriend->Name,pFriend->Age,pFriend->Height);

}

 

ÀÌ ¿¹Á¦¸¦ ÄÄÆÄÀÏÇÏ¸é °ð »ç¶óÁú Áö¿ªº¯¼öÀÇ ¹øÁö¸¦ ¸®ÅÏÇß´Ù´Â °æ°í°¡ ¹ß»ýÇÒ »Ó¸¸ ¾Æ´Ï¶ó Á¦´ë·Î µ¿ÀÛÇÏÁöµµ ¾Ê´Â´Ù. GetFriend ÇÔ¼ö´Â Áö¿ªº¯¼ö tÀÇ ¸â¹ö¿¡ °ªÀ» ´ëÀÔÇÑ ÈÄ ±× Æ÷ÀÎÅ͸¦ ¸®ÅÏÇϸç main¿¡¼­´Â ÀÌ Æ÷ÀÎÅ͸¦ pFriend·Î ´ëÀÔ¹Þ¾Ò´Ù. ¿©±â±îÁö¸¸ º¸¸é pFriend´Â GetFriend ÇÔ¼ö°¡ ÃʱâÈ­ÇØ ³õÀº t±¸Á¶Ã¼ÀÇ ¹øÁö¸¦ °¡Áö°í ÀÖÀ¸¸ç ÀÌ ¹øÁö¿¡´Â °ú¿¬ ±¸Á¶Ã¼ÀÇ Á¤º¸°¡ µé¾î Àֱ⵵ ÇÏ´Ù.

±×·¯³ª ÀÌ °ªÀ» Ãâ·ÂÇÏ·Á°í printf¸¦ È£ÃâÇÏ´Â ¼ø°£ ÀÌ ¹øÁöÀÇ ³»¿ëÀÌ Æı«µÇ¾î ¹ö¸®´Âµ¥ printf È£ÃâÀ» À§ÇØ ½ºÅÿ¡ ÀúÀåµÈ °ªÀÌ Æı«µÇ±â ¶§¹®ÀÌ´Ù. pFriend Æ÷ÀÎÅÍ°¡ °¡¸®Å°°í ÀÖ´Â ½ºÅûóÀÇ ¹øÁö´Â ¸®ÅÏ Á÷ÈÄ¿¡¸¸ À¯È¿ÇÏ¸ç ´Ù¸¥ ÇÔ¼ö¸¦ È£ÃâÇÏ´Â Áï½Ã Æı«µÇ´Â ¼ºÁúÀ» °¡Áö°í ÀÖ´Ù. ±×·¡¼­ Áö¿ªº¯¼ö·Î ¼±¾ðµÈ ±¸Á¶Ã¼(´Ù¸¥ º¯¼öµµ ¸¶Âù°¡ÁöÀÌ´Ù)ÀÇ ¹øÁö¸¦ ¸®ÅÏÇÏ´Â °ÍÀº ¿ÇÁö ¾Ê´Ù.

°ªÀº Àӽà »çº»ÀÌ ¸®ÅϵǹǷΠ»ó°ü¾øÁö¸¸ Æ÷ÀÎÅÍ´Â °£Á¢ÀûÀ¸·Î ´ë»óü¸¦ ÂüÁ¶ÇϹǷΠ´ë»óü°¡ »ç¶óÁö¸é ¹«È¿ÇØÁø´Ù. ¸¸¾à GetFriend ÇÔ¼ö¿¡¼­ Áö¿ªº¯¼ö t°¡ ¾Æ´Ñ mallocÀ̳ª new·Î µ¿Àû ÇÒ´çÇÑ ±¸Á¶Ã¼ÀÇ ¹øÁö¸¦ ¸®ÅÏÇÑ´Ù¸é ÀÌ °æ¿ì´Â °¡´ÉÇÏ´Ù. µ¿ÀûÀ¸·Î ÇÒ´çµÈ ¸Þ¸ð¸®´Â ÀϺη¯ Æı«ÇÏÁö ¾Ê´Â ÇÑ ±× ³»¿ëÀ» °è¼Ó º¸Á¸Çϱ⠶§¹®ÀÌ´Ù.