13-1-³ª.±¸Á¶Ã¼ ű×

±¸Á¶Ã¼ º¯¼ö°¡ µü Çϳª¸¸ ÇÊ¿äÇÏ´Ù¸é ¾Õ¿¡¼­ ¿¹¸¦ µç ¹æ¹ý´ë·Î ±¸Á¶Ã¼ º¯¼ö¸¦ ¹Ù·Î ¼±¾ðÇÒ ¼ö ÀÖÁö¸¸ ű׸¦ ¸ÕÀú Á¤ÀÇÇÏ°í ÀÌ Å±׷Π±¸Á¶Ã¼ º¯¼ö¸¦ ¼±¾ðÇÏ´Â °ÍÀÌ ´õ ÀϹÝÀûÀÌ´Ù. ±¸Á¶Ã¼ ű״ ¿­°ÅÇüÀÇ ÅÂ±×¿Í ¸¶Âù°¡Áö·Î ŸÀÔ¿¡ ´ëÇØ À̸§À» ºÙÀÌ´Â °ÍÀÌ´Ù. ű׸¦ »ç¿ëÇÏ¿© ±¸Á¶Ã¼¸¦ Á¤ÀÇÇÏ´Â Çü½ÄÀº ´ÙÀ½°ú °°´Ù.

 

struct ű׸í { ¸â¹ö ¸ñ·Ï };

 

Å°¿öµå struct ´ÙÀ½¿¡ ű×ÀÇ À̸§À» ÁÖ°í ¸â¹ö ¸ñ·ÏÀ» ³ª¿­ÇÑ´Ù. ű׵µ ÀÏÁ¾ÀÇ ¸íĪÀ̹ǷΠ¸íĪ ±ÔÄ¢¿¡¸¸ ¸Â´Ù¸é ÀÚÀ¯·Ó°Ô À̸§À» ºÙÀÏ ¼ö Àִµ¥ °ü½ÀÀûÀ¸·Î ±¸Á¶Ã¼ ű״ tag_¶ó´Â Á¢µÎ¾î¸¦ ºÙÀÌ´Â °æ¿ì°¡ ¸¹´Ù. ¹°·Ð °­Á¦´Â ¾Æ´Ï¹Ç·Î S³ª T Á¢µÎ¸¦ ºÙÀÏ ¼öµµ ÀÖ°í º° ±¸ºÐÀ» ÇÒ ÇÊ¿ä°¡ ¾ø´Ù¸é Á¢µÎ¸¦ ºÙÀÌÁö ¾Ê¾Æµµ »ó°ü ¾ø´Ù. ´ÙÀ½Àº Ä£±¸ÀÇ ½Å»ó ¸í¼¼¸¦ ±â¾ïÇÏ´Â ±¸Á¶Ã¼ ŸÀÔÀ» tag_Friend¶ó´Â À̸§À¸·Î ¼±¾ðÇÏ´Â ¿¹ÀÌ´Ù.

 

struct tag_Friend {

     char Name[10];

     int Age;

     double Height;

};                               // ³¡¿¡ ¼¼¹ÌÄÝ·ÐÀÌ ÀÖ¾î¾ß ÇÔ

 

ÅÂ±× ¼±¾ð¹®µµ ÀÏÁ¾ÀÇ ¹®ÀåÀ̹ǷΠ´Ý´Â } °ýÈ£ ´ÙÀ½¿¡ ¼¼¹ÌÄÝ·ÐÀÌ ÀÖ¾î¾ß ÇÔÀ» À¯ÀÇÇϵµ·Ï ÇÏÀÚ. Ãʺ¸ÀÚ»Ó¸¸ ¾Æ´Ï¶ó ¼÷·ÃÀڵ鵵 ÈçÈ÷ ÀÌ À§Ä¡¿¡ ¼¼¹ÌÄÝ·ÐÀ» »©¸Ô´Â ½Ç¼ö¸¦ Á¾Á¾ ÇÑ´Ù. ÅÂ±× ¼±¾ð¹®Àº ÄÄÆÄÀÏ·¯¿¡°Ô ±¸Á¶Ã¼ÀÇ ¸ð¾çÀÌ ¾î¶»´Ù´Â °ÍÀ» µî·ÏÇÒ »ÓÀÌÁö ű׸¦ À§ÇØ ¸Þ¸ð¸®¸¦ ÇÒ´çÇѴٰųª º¯¼ö¸¦ »ý¼ºÇÏ´Â °ÍÀº ¾Æ´Ï¸ç Áߺ¹ ¼±¾ðÇصµ »ó°ü¾ø´Ù. ÅÂ±× ¼±¾ð¿¡ ÀÇÇØ ÄÄÆÄÀÏ·¯´Â tag_Friend¶ó´Â űװ¡ Name, Age, Height¸¦ ¸â¹ö·Î °¡Áö´Â ±¸Á¶Ã¼¶ó´Â °ÍÀ» ±â¾ïÇÒ °ÍÀÌ´Ù. ű׸¦ ÇÑ ¹ø µî·ÏÇØ ³õÀ¸¸é ÀÌ Å±׷Π±¸Á¶Ã¼ º¯¼ö¸¦ ¿©·¯ ¹ø ¼±¾ðÇÒ ¼ö ÀÖ´Ù.

 

struct tag_Friend Friend;             // CÇü

tag_Friend Friend;                      // C++Çü

 

±¸Çü C ÄÄÆÄÀÏ·¯´Â ű׸¦ »ç¿ëÇÒ ¶§ ±¸Á¶Ã¼ ű׶ó´Â °ÍÀ» ¸íÈ®ÇÏ°Ô ¾Ë¸®±â À§ÇØ struct¶ó´Â Å°¿öµå¸¦ ű׾տ¡ ºÙ¿©¾ß Çϳª C++¿¡¼­´Â űװ¡ ÇϳªÀÇ Å¸ÀÔÀ¸·Î ÀÎÁ¤µÇ±â ¶§¹®¿¡ struct¾øÀÌ ÅÂ±×¸í¸¸À¸·Î ±¸Á¶Ã¼¸¦ ¼±¾ðÇÒ ¼ö ÀÖ´Ù. ÃÖ±Ù ÄÄÆÄÀÏ·¯µéÀº ¸ðµÎ C++ ÄÄÆÄÀÏ·¯À̹ǷΠÀÌÁ¦´Â ±ÍÂú°Ô structÅ°¿öµå¸¦ ű׸í¾Õ¿¡ ÀÏÀÏÀÌ ºÙÀÌÁö ¾Ê¾Æµµ µÈ´Ù. ´Ü, ÀÌ·¸°Ô ÇÏ·Á¸é ÆÄÀÏÀÇ È®ÀåÀÚ¸¦ ¹Ýµå½Ã CPP¸¦ ºÙ¿© C++ ¹®¹ýÀ¸·Î ÄÄÆÄÀÏÇØ¾ß ÇÑ´Ù.

»õ·Î¿î ŸÀÔÀ» Á¤ÀÇÇÏ´Â typedef¹®À» »ç¿ëÇϸé ű׸¦ Á¤ÀÇÇÏ´Â °Í°ú µ¿ÀÏÇÑ È¿°ú¸¦ ³¾ ¼ö ÀÖ´Ù. ´ÙÀ½ ¼±¾ð¹®Àº FriendTypeÀ̶ó´Â »õ·Î¿î ŸÀÔÀ» Á¤ÀÇÇÑ´Ù.

 

typedef struct {

     char Name[10];

     int Age;

     double Height;

} FriendType;

 

ÀÌ ¼±¾ð¿¡ ÀÇÇØ ÄÄÆÄÀÏ·¯´Â Name, Age, Height¸¦ ¸â¹ö·Î °¡Áö´Â ±¸Á¶Ã¼ ŸÀÔÀ» FriendTypeÀ̶ó´Â À̸§À¸·Î »õ·Ó°Ô Á¤ÀÇÇÑ´Ù. ÀÌ Á¤ÀÇ¿¡ ÀÇÇØ FriendTypeÀº int, double, char µî°ú ¿ÏÀüÈ÷ µ¿ÀÏÇÑ ÀÚ°ÝÀ» °¡Áö´Â »ç¿ëÀÚ Á¤ÀÇ Å¸ÀÔÀ¸·Î ÀÎÁ¤µÈ´Ù. typedef·Î Á¤ÀÇÇÑ Å¸ÀÔÀº ű׿ʹ ¹®¹ýÀûÀ¸·Î ´Ù¸¥ Á¸ÀçÀÌÁö¸¸ C++¿¡¼­´Â µ¿ÀÏÇÏ°Ô Ãë±ÞµÇ¹Ç·Î ű׷Πº¯¼ö¸¦ ¼±¾ðÇϵíÀÌ »ç¿ëÀÚ Á¤ÀÇ Å¸ÀÔÀ¸·Îµµ º¯¼ö¸¦ Á¤ÀÇÇÒ ¼ö ÀÖ´Ù.

±¸Á¶Ã¼ º¯¼ö¸¦ ¹Ù·Î ¼±¾ðÇÒ ¼öµµ ÀÖ°í ű׳ª »ç¿ëÀÚ Å¸ÀÔÀ» ¸ÕÀú Á¤ÀÇÇÑ ÈÄ °£Á¢ÀûÀ¸·Î ±¸Á¶Ã¼ º¯¼ö¸¦ ¼±¾ðÇÒ ¼öµµ ÀÖ´Ù. ±×·¡¼­ ´ÙÀ½ ¼¼ ¼±¾ð¹®¿¡ ÀÇÇØ ¼±¾ðµÇ´Â Friend º¯¼ö´Â µ¿ÀÏÇÑ ±¸Á¶Ã¼ º¯¼öÀÌ´Ù.

 

struct {

     char Name[10];

     int Age;

     double Height;

} Friend;

struct tag_Friend {

     char Name[10];

     int Age;

     double Height;

};

tag_Friend Friend;

typedef struct {

     char Name[10];

     int Age;

     double Height;

} FriendType;

FriendType Friend;

 

¾ð¶æ º¸±â¿¡´Â º¯¼ö¸¦ ¹Ù·Î ¼±¾ðÇÏ´Â ¹æ½ÄÀÌ ÈξÀ ´õ °£´ÜÇÏ°í Æí¸®ÇØ º¸ÀδÙ. ű׳ª »ç¿ëÀÚ Á¤ÀÇ Å¸ÀÔÀ» ÅëÇÏ´Â ¹æ¹ýÀº Á¶±Ý ¹ø°Å·Î¿î °Í °°Áö¸¸ ÀÌ·¸°Ô ŸÀÔÀ» ¸ÕÀú Á¤ÀÇÇÏ¸é ¿©·¯ °¡Áö Æí¸®ÇÑ Á¡ÀÌ ÀÖ´Ù.

 

 Å¸ÀÔÀÌ Á¤ÀǵǸé ÀÌ Å¸ÀÔÀ¸·Î °°Àº ÇüÀÇ º¯¼ö¸¦ ¿©·¯ ¹ø ¼±¾ðÇÒ ¼ö ÀÖ´Ù. tag_Friend¶ó´Â ű׿¡ ÀÌ ±¸Á¶Ã¼ÀÇ ¸ð¾çÀÌ ÀÌ¹Ì ÀúÀåµÇ¾î ÀÖÀ¸¹Ç·Î ÀÌ·± ±¸Á¶Ã¼ º¯¼ö°¡ ÇÊ¿äÇÏ¸é ¾ðÁ¦µçÁö ű׷κÎÅÍ º¯¼ö¸¦ ¼±¾ðÇϱ⸸ ÇÏ¸é µÈ´Ù.

 

tag_Friend A,B,C;

tag_Friend Babo;

 

¸¸¾à ű׸¦ Á¤ÀÇÇÒ ¼ö ¾ø°í º¯¼ö¸¦ ¹Ù·Î ¼±¾ðÇÏ´Â °Í¸¸ °¡´ÉÇÏ´Ù¸é ±¸Á¶Ã¼ º¯¼ö°¡ ÇÊ¿äÇÒ ¶§¸¶´Ù ¸â¹ö ¸ñ·ÏÀ» ÀÏÀÏÀÌ ³ª¿­ÇØ¾ß ÇϹǷΠ¹«Ã´ ºÒÆíÇÒ °ÍÀÌ´Ù.

 ÀÌ Å¸ÀÔÀ¸·ÎºÎÅÍ ÆÄ»ýµÇ´Â À¯µµÇü º¯¼ö¸¦ ¼±¾ðÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î tag_FriendÇüÀÇ ±¸Á¶Ã¼¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ º¯¼ö¸¦ ¼±¾ðÇÏ°í ½Í´Ù°Å³ª ÀÌ·± ±¸Á¶Ã¼ ¿©·¯ °³¸¦ ¸ð¾Æ ¹è¿­À» ±¸¼ºÇÏ°í ½Í´Ù¸é ´ÙÀ½°ú °°ÀÌ ¼±¾ðÇÑ´Ù.

 

tag_Friend *pFriend;

tag_Friend arFriend[100];

 

Æ÷ÀÎÅͳª ¹è¿­Àº ŸÀÔÀ¸·ÎºÎÅÍ À¯µµµÇ´Â °ÍÀÌÁö º¯¼ö·ÎºÎÅÍ À¯µµµÇ´Â °ÍÀÌ ¾Æ´Ï¹Ç·Î ÀÌ·± º¯¼ö¸¦ ¼±¾ðÇÏ·Á¸é ¹Ýµå½Ã ŸÀÔÀÌ ¸ÕÀú Á¤ÀǵǾî ÀÖ¾î¾ß ÇÑ´Ù. ¶ÇÇÑ ±¸Á¶Ã¼°¡ ´Ù¸¥ ±¸Á¶Ã¼¸¦ Æ÷ÇÔÇѴٰųª ÇÒ ¶§µµ ŸÀÔÀÌ ÇÊ¿äÇÏ´Ù.

 ±¸Á¶Ã¼¸¦ ÇÔ¼öÀÇ Àμö³ª ¸®ÅÏ°ªÀ¸·Îµµ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î Ä£±¸ÀÇ ½Å»ó ¸í¼¼¸¦ Ãâ·ÂÇÏ´Â OutFriend¶ó´Â ÇÔ¼ö¸¦ ¸¸µé¾î¾ß ÇÑ´Ù°í ÇØ º¸ÀÚ. À̸§, ³ªÀÌ, Å° µîÀÇ Á¤º¸¸¦ µû·Îµû·Î ³Ñ±âÁö ¾ÊÀ¸·Á¸é ±¸Á¶Ã¼¸¦ Åë°·Î ³Ñ±â°Å³ª ¾Æ´Ï¸é ±¸Á¶Ã¼ Æ÷ÀÎÅ͸¦ ³Ñ°Ü¾ß ÇÑ´Ù. OutFriend ÇÔ¼ö´Â ¾Æ¸¶µµ ´ÙÀ½°ú °°Àº ¸ð¾çÀ» °¡Áö°Ô µÉ °ÍÀÌ´Ù.

 

void OutFriend(tag_Friend aFriend) { ... }

void OutFriend(tag_Friend *pFriend) { ... }

 

ÇÔ¼öÀÇ Àμö ¸ñ·Ï¿¡ tag_FriendÇüÀÇ º¯¼ö ¶Ç´Â Æ÷ÀÎÅ͸¦ ³Ñ±âµµ·Ï ¼±¾ðÇߴµ¥ űװ¡ ¾ø´Ù¸é "¿ä·¸°Ô ¿ä·¸°Ô »ý±ä ±¸Á¶Ã¼¸¦ Àü´ÞÇ϶ó"´Â ¼±¾ð ÀÚü°¡ ºÒ°¡´ÉÇÏ´Ù. ÄÄÆÄÀÏ·¯°¡ ±¸Á¶Ã¼ÀÇ ¸ð¾çÀ» ¸ÕÀú ¾Ë¾Æ¾ß ÇÔ¼öÀÇ Àμö³ª ¸®ÅÏ°ªÀ¸·Î ±¸Á¶Ã¼¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

 

ÀÌ·± ¿©·¯ °¡Áö ÀÌÀ¯·Î ±¸Á¶Ã¼°¡ ÇÊ¿äÇÒ ¶§´Â ű׳ª »ç¿ëÀÚ Á¤ÀÇ Å¸ÀÔÀ» ¸ÕÀú Á¤ÀÇÇÏ°í ű׷κÎÅÍ º¯¼ö¸¦ ¼±¾ðÇÏ´Â °ÍÀÌ ÁÁ´Ù. Âü°í·Î ´ÙÀ½°ú °°Àº Çü½Äµµ °¡´ÉÇÏ´Ù.

 

struct tag_Friend {

     char Name[10];

     int Age;

     double Height;

} Friend;

 

ű׵µ Á¤ÀÇÇϸ鼭 º¯¼öµµ °°ÀÌ ¼±¾ðÇÏ´Â Çü½ÄÀε¥ µÎ °³ÀÇ ¹®ÀåÀ» Çϳª·Î ÇÕÄ£ °Í ¿Ü¿¡´Â º° Â÷ÀÌ°¡ ¾ø´Ù. ÄÚµå ±æÀÌ°¡ ÇÑÁÙ ´õ ª¾ÆÁö´Â È¿°ú°¡ ÀÖ±â´Â ÇÏÁö¸¸ ÀÚÁÖ ¾Ö¿ëµÇ´Â ¹æ¹ýÀº ¾Æ´Ï´Ù.