* Á¦ 7Àå - ±¸Á¶Ã¼¿Í °ø¿ëü Áö³­ Àå±îÁö ¹è¿î ÀÚ·áÀÇ ±¸Á¶´Â ¸ðµÎ ÇÑ °³ÀÇ µ¥ÀÌÅÍ·Î ±¸¼ºµÇ´Â °ÍÀ̾ú ´Ù. À̹ø Àå¿¡¼­´Â º¹¼ö°³ÀÇ µ¥ÀÌÅÍÇüÀÌ ¸ð¿© ÇϳªÀÇ ÀڷḦ ±¸¼ºÇÏ´Â ±¸ Á¶Ã¼¿Í ÇϳªÀÇ µ¥ÀÌÅ͸¦ ¿©·¯ º¯¼ö°¡ ÇÔ²² »ç¿ëÇÏ´Â °ø¿ëü¿¡ ´ëÇÏ¿© ¼³¸í ÇÏ°Ú´Ù. 1. ±¸ Á¶ ü ±¸Á¶Ã¼´Â ÇÑ °³ÀÇ ÀÚ·á°¡ ¿©·¯ °³ÀÇ µ¥ÀÌÅÍÇüÀ¸·Î ±¸¼ºµÇ´Â º¹ÇÕ µ¥ÀÌÅÍ ÇüÀÌ´Ù. ¿¹¸¦ µé¾î, ¾î´À ȸ»ç¿¡¼­ Àλç È­ÀÏÀ» ¸¸µç´Ù°í °¡Á¤ÇÒ ¶§ Àλç È­ÀϵéÀº ¾Æ·¡¿Í °°Àº ±¸Á¶¸¦ °¡Áú ¼ö ÀÖ´Ù. name addr birth tel +-----+-----+--------+--------+ |ÀÌ ¸§|ÁÖ ¼Ò|»ý³â¿ùÀÏ|ÀüÈ­¹øÈ£| ===> Àλç È­ÀÏÀÇ °¢ ÀÚ·á +-----+-----+--------+--------+ ÀÌ¿Í °°ÀÌ ¿©·¯ °³ÀÇ ´Ü¼ø Ç׸ñ(field)ÀÌ ¸ð¿©¼­ ÇϳªÀÇ Áý´Ü Ç׸ñ(recor d)À» ÀÌ·é °ÍÀ» ±¸Á¶Ã¼¶ó°í ÇÑ´Ù. ±×¸®°í ·¹ÄÚµå ÀÚü¿¡ ÇϳªÀÇ À̸§(º¯¼ö ¸í)À» ºÎ¿©ÇÒ ¼ö Àִµ¥, ÀÌ·¯ÇÑ ±¸Á¶Ã¼ÀÇ À̸§À» ±¸Á¶Ã¼ ÅÃ(tag)À̶ó°í ÇÑ´Ù. ±¸Á¶Ã¼ÀÇ ¼±¾ðÀº ´ÙÀ½°ú °°Àº Çü½ÄÀ¸·Î ÇÑ´Ù. <Çü ½Ä> struct ±¸Á¶Ã¼ À̸§ { ¸â¹ö 1ÀÇ ¼±¾ð¹®; ¸â¹ö 2ÀÇ ¼±¾ð¹®; ...........; ¸â¹ö nÀÇ ¼±¾ð¹®; }; À§ÀÇ ÀڷḦ ÀÌ¿ëÇÏ¿© ´ÙÀ½°ú °°ÀÌ ±¸Á¶Ã¼¸¦ Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. struct insa { char name[8]; char addr[25]; long birth; char tel[8]; }; ÀÌ¿Í °°Àº ¼±¾ðÀº ÀϹÝÀûÀ¸·Î main()ÇÔ¼ö ¾Õ¿¡¼­ Çϴµ¥ ÀÌ´Â ±¸Á¶Ã¼ÀÇ ±¸Á¶ ¹× Çü½ÄÀ» ÇÔ¼ö¿¡¼­ ÀοëÇÒ ¼ö ÀÖ°Ô Çϱâ À§ÇÑ °ÍÀÌ´Ù. ±¸Á¶Ã¼¸¦ ¼± ¾ðÇÏ¸é ±¸Á¶Ã¼ÀÇ Çü½Ä¸¸ Á¤ÀÇµÇ°í ½ÇÁ¦ ÀÚ·á´Â ÇÒ´çµÇÁö ¾ÊÀ¸¹Ç·Î ±¸Á¶Ã¼ Çü½ÄÀÇ ¼±¾ð ÈÄ¿¡ ±¸Á¶Ã¼ º¯¼ö¸¦ µû·Î Àâ¾Æ ÇÒ´çÇØ¾ß ÇÑ´Ù. main() { struct insa x,y,z; /* º¯¼ö x,y,z¸¦ insaÀÇ ±¸Á¶¸¦ °®´Â */ /* ±¸Á¶Ã¼·Î ¼±¾ð */ x.name="Park"; x.addr="Seoul"; x.birth=560604; x.tel="123-1234"; y.name="Kin"; ..... z.name="Son"; ..... } ±¸Á¶Ã¼ÀÇ Ç׸ñ(¸â¹ö)À» ÂüÁ¶Çϰųª ±¸Á¶Ã¼ ¿ä¼Ò¿¡ °ªÀ» ÇÒ´çÇÒ ¶§´Â ±¸Á¶ ü Ç׸ñ ¿¬»êÀÚ(.)¸¦ ÀÌ¿ëÇÑ´Ù. ±¸Á¶Ã¼´Â °³°³ÀÇ Ç׸ñ(field)ÀÌ ¸ð¿© Áý´Ü Ç׸ñÀ» ÀÌ·ç´Â º¹ÇÕ µ¥ÀÌÅÍÇüÀ̳ª È­ÀÏÀ» °ü¸®ÇÏ´Â ÇÁ·Î±×·¥ µî¿¡¼­ ¾ÆÁÖ ¿ä±äÇÏ°Ô ¾²ÀδÙ. À§ÀÇ ±¸Á¶Ã¼ º¯¼ö¿¡¼­ ´ÙÀ½ÀÇ °æ¿ì¸¦ »ý°¢ÇØ º¸ÀÚ. &x : ±¸Á¶Ã¼ º¯¼ö xÀÇ ½ÃÀÛ ÁÖ¼Ò x.name[2] : xÀÇ ¸â¹ö nameÀÇ 3¹ø° ¹®ÀÚ¸¦ °¡¸®Å²´Ù. ±¸Á¶Ã¼ º¯¼ö´Â staticÀ¸·Î ¼±¾ðµÈ °æ¿ì³ª ¿ÜºÎ º¯¼ö·Î ¼±¾ðµÈ °æ¿ì¿¡ ÇÑ ÇÏ¿© º¯¼ö ÀüüÀÇ ÃʱâÈ­°¡ °¡´ÉÇÏ´Ù. staticÀ¸·Î ¼±¾ðµÈ °æ¿ì¿¡´Â ´ÙÀ½°ú °°ÀÌ ±â¼úÇÑ´Ù. À̶§ ¸â¹ö¿Í ¸â¹ö »çÀÌ, º¯¼ö¿Í º¯¼ö »çÀÌ¿¡´Â ,·Î ±¸ºÐÇÏ ¸ç, ¸Ç ¸¶Áö¸·¿¡ ; ¸¦ Âï´Â´Ù. main() { static struct insa x={"Park","Seoul",560604,"123-1234"}, y={"Kim","Pusan", ... }, z={"Son", ..... }; ¹Ý¸é ±¸Á¶Ã¼¸¦ ¿ÜºÎ º¯¼ö·Î ¼±¾ðÇÒ °æ¿ì¿¡´Â ±¸Á¶Ã¼ÀÇ ¼±¾ð°ú µ¿½Ã¿¡ ±¸ Á¶Ã¼ º¯¼ö¸¦ ¼³Á¤ÇÏ´Â °ÍÀº ¹°·Ð, °¢°¢ÀÇ ¸â¹ö¿¡ ÃʱâÄ¡¸¦ ºÎ¿©ÇÒ ¼öµµ ÀÖ ´Ù. struct insa { ( , ¿Í ; °¡ ¾²ÀÎ °÷À» È®ÀÎÇϱ⠹ٶõ´Ù) char name[8]; char addr[25]; | struct insa { lond birth; | char *name; char tel[8]; | char *addr; } x={"Park", ....... }, | long birth; y={ ........... }, | char *tel; z={ ........... }; | }; ±¸Á¶Ã¼ÀÇ ¸â¹ö´Â Æ÷ÀÎÅÍÇüÀ¸·Î ¼±¾ðÇÒ ¼ö Àִµ¥ ¿ì¸®°¡ ´Ù·ç°í ÀÖ´Â ±¸ Á¶Ã¼¸¦ Æ÷ÀÎÅÍÇüÀ¸·Î ¹Ù²Ù¸é À§ÀÇ ¿ìÃø°ú °°´Ù. 2. ±¸Á¶Ã¼ ¹è¿­ ±¸Á¶Ã¼ÀÇ °æ¿ì¿¡µµ ´ÙÀ½°ú °°ÀÌ ¹è¿­À» »ç¿ëÇÒ ¼ö ÀÖ´Ù. struct insa kcom[10]; ÀÌ °æ¿ì¿¡´Â ¿ä¼Ò°¡ 10ÀÎ ±¸Á¶Ã¼ ¹è¿­ kcomÀÌ ÁغñµÇ¸ç, kcom¿¡´Â ±¸Á¶Ã¼ ¹è¿­ÀÇ ½ÃÀÛ ÁÖ¼Ò°¡, ¸Þ¸ð¸® ³»ºÎ¿¡´Â °¢ ¸â¹ö°¡ ÀúÀåµÉ °ø°£ÀÌ È®º¸µÈ´Ù. ÀÌ ±¸Á¶Ã¼´Â ¾Æ·¡ ±×¸²°ú °°ÀÌ ±â¾ïÀå¼Ò°¡ ÇÒ´çµÈ´Ù. name addr birth tel +----------+-----------+---------+----------+ |9¹®ÀÚ ¹è¿­|25¹®ÀÚ ¹è¿­|long Á¤¼ö|8¹®ÀÚ ¹è¿­| +----------+-----------+---------+----------+ kcom[0]| | | | | +----------+-----------+---------+----------+ ...... +----------+-----------+---------+----------+ kcom[9]| | | | | +----------+-----------+---------+----------+ ±×¸®°í ±¸Á¶Ã¼ ¹è¿­¿¡¼­ °¢ ¸â¹ö¸¦ ÂüÁ¶ÇÒ ¶§´Â ´ÙÀ½°ú °°ÀÌ ±â¼úÇÑ´Ù. buf=kcom[3].addr Áï, ¹è¿­ ÷ÀÚ¸¦ ¸ÕÀú ±â¼úÇÑ ÈÄ, ±¸Á¶Ã¼ Ç׸ñ ¿¬»êÀÚ(.)¸¦ Âï°í Ç׸ñ¸í À» ±â¼úÇÑ´Ù. ±¸Á¶Ã¼ ¹è¿­ÀÇ ¼±¾ð ¹æ¹ý°ú »ç¿ë¿¡ µû¸¥ Á¦¹Ý ÀýÂ÷´Â ÀÏ¹Ý¹è ¿­ÀÇ °æ¿ì¿Í µ¿ÀÏÇÏ´Ù. ±×·¯¸é, ¿¹Á¦¸¦ º¸ÀÚ. <¿¹Á¦1> ´ÙÀ½ ÀڷḦ ±¸Á¶Ã¼ ¹è¿­¿¡ ±â¾ï½ÃŲ ÈÄ È­¸é¿¡ Ãâ·ÂÇÏ´Â ÇÁ·Î±× ·¥ ÀÛ¼º. ================================================== ¹øÈ£ ¼º ¸í ÁÖ ¼Ò »ýÀÏ ÀüÈ­¹øÈ£ ================================================== 1 ±è À¯½Å ¼­¿ï ¼ºµ¿±¸ 560604 123-5432 2 °­ °¨Âù ºÎ»ê µ¿·¡±¸ 600430 43-4455 3 ÀÌ ¼ø½Å ¼ö¿ø È­¼­µ¿ 661122 2-1234 4 °í ¹Ù¿ì ¼º³² »ó´ë¿øµ¿ 610530 212-1155 ================================================== <¸®½ºÆ®1> #include struct insa { /* ±¸Á¶Ã¼ÀÇ Çü½Ä ¼±¾ð */ char *name; /* È­ÀÏÀÇ Àü±¸°£¼­ »ç¿ë°¡´É */ char *addr; long birth; char *tel; }; main() { struct insa in[]={ /* ±¸Á¶Ã¼ ¹è¿­ÀÇ ÃʱâÈ­ */ {"±è À¯½Å","¼­¿ï ¼ºµ¿±¸",560604,"123-5432"}, {"°­ °¨Âù","ºÎ»ê µ¿·¡±¸",600430,"43-4455"}, {"ÀÌ ¼ø½Å","¼ö¿ø È­¼­µ¿",661122,"2-1234"}, {"°í ¹Ù¿ì","¼º³² »ó´ë¿øµ¿",610530,"212-1155"} }; int i; printf("==================================================\n"); printf("¹øÈ£ ¼º ¸í ÁÖ ¼Ò »ýÀÏ ÀüÈ­¹øÈ£\n"); printf("==================================================\n"); for (i=0;i <= 3;i++) printf("%2d %-10s%-17s%6ld%10s\n",i+1,in[i].name, in[i].addr,in[i].birth,in[i].tel); printf("==================================================\n"); } 3. ÁßøµÈ ±¸Á¶Ã¼(nested structure) Á¾Á¾ ÇÑ ±¸Á¶Ã¼°¡ ¶Ç ´Ù¸¥ ±¸Á¶Ã¼¸¦ Æ÷ÇÔ½ÃÅ°´Â °æ¿ì°¡ ÀÖ´Ù. ¾Æ·¡ÀÇ ±× ¸²À» º¸ÀÚ. fellow (±¸Á¶Ã¼¸í guy) +------------------------+-----------+-----+-------+ | handle(±¸Á¶Ã¼¸í names) | | | | +------------+-----------+ favfood | job | income| | first[LEN] | last[LEN] |Áñ±â´Â À½½Ä|Á÷ ¾÷| ¼ö ÀÔ| +------------+-----------+-----------+-----+-------+ | | | | | | À§ÀÇ ±×¸²Àº ±¸Á¶Ã¼ guyÁß¿¡ ±¸Á¶Ã¼ nameÀÌ µé¾îÀÖ´Â °æ¿ìÀÌ´Ù. <¿¹Á¦2> ÁßøµÈ ±¸Á¶Ã¼ÀÇ ¿¹ (ö¸ð¸£´Â ¾î¸°ÀÌÀÇ ÆíÁö) <¸®½ºÆ®2> #define LEN 20 struct names { char first[LEN]; /* ¼º¸í ±¸Á¶Ã¼ÀÇ À̸§ Ç׸ñ */ char last[LEN]; /* ¼º¸í ±¸Á¶Ã¼ÀÇ ¼º Ç׸ñ */ }; struct guy { struct names handle; /* ±¸Á¶Ã¼ guyÀÇ ³»ºÎ¿¡ ´Ù½Ã ±¸Á¶Ã¼ */ /* names¸¦ °¡Áö´Â ±¸Á¶Ã¼ º¯¼ö handle¼±¾ð */ char favfood[LEN]; char job[LEN]; float income; }; main() { static struct guy fellow={ /*±¸Á¶Ã¼guyÀÇ ±¸Á¶¸¦ °¡Áö´Â º¯¼ö */ /* fellowÀÇ ÃʱâÈ­ */ {"ÅÂÁö","¼­"}, /* ±¸Á¶Ã¼namesÀÇ ÃʱâÈ­À̹ǷΠ{ }·Î ½Ñ´Ù */ "µÅÁö Á·¹ß", "¶ô °¡¼ö", 1000000 }; printf("¾È³çÇϼ¼¿ä? %s¾ÆÀú¾¾,\n",fellow.handle.first); printf("»õ·Î³ª¿Â ³ë·¡ Á¤¸» ±¦ÂúÅ׿ä?\n\n"); printf("Àú´Â %s%s¾ÆÀú¾¾°¡ %sÀ» ÁÁ¾ÆÇÑ´Ù´Â ¼Ò¸± µè°í\n", fellow.handle.last, fellow.handle.first, fellow.favfood); printf("³Ê¹«³Ê¹« ¾ß¸¸ÀÎÀ̶ó°í »ý°¢Ç߰ŵç¿ä? \n"); printf("ÇÏÁö¸¸ ¾ÆÀú¾¾°¡ À̹ø¿¡ ¼öÇص½±â ¼º±ÝÀ¸·Î\n"); printf("%.0f¿øÀ̳ª ³»¼Ì´Ù´Â ¼Ò¸®¸¦ µè°í",fellow.income); printf("Á¤¸» ±âºÐ ÁÁ¾Ò¾î¿ä.!\n"); printf("¾ÕÀ¸·Î ¿­½ÉÈ÷ Çϼż­ ¸ÚÁø %s°¡ µÇ¼¼¿ä!!\n\n\n", fellow.job); getch(); } 4. ±¸Á¶Ã¼ Æ÷ÀÎÅÍ º¯¼ö ±¸Á¶Ã¼¿¡ ´ëÇؼ­µµ Æ÷ÀÎÅ͸¦ »ç¿ëÇÒ ¼ö°¡ ÀÖ´Ù. ±¸Á¶Ã¼ Æ÷ÀÎÅÍ º¯¼ö°¡ Ÿ ´çÇÑ ÀÌÀ¯¸¦ µé¸é, 1) ±¸Á¶Ã¼¿¡ ´ëÇÑ Æ÷ÀÎÅÍ°¡ ±¸Á¶Ã¼ ÀÚü º¸´Ù´Â ó¸®ÇϱⰡ ¿ëÀÌÇÏ´Ù. 2) ±¸Á¶Ã¼´Â ÇÔ¼öÀÇ ÀÎÀڷμ­ Àü´ÞµÉ ¼ö ¾øÁö¸¸ ±¸Á¶Ã¼¿¡ ´ëÇÑ Æ÷ÀÎÅÍ ´Â °¡´ÉÇÏ´Ù. 3) ´ë´Ù¼öÀÇ °íµµÀÇ µ¥ÀÌÅÍ Ç¥ÇöÀº ¶Ç ´Ù¸¥ ±¸Á¶Ã¼¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ ±¸ ¼º¿øÀ¸·Î ÇÏ´Â ±¸Á¶Ã¼¿¡ ÀÇÇØ °¡´ÉÇÏ´Ù. struct insa *p;ó·³ p¸¦ ±¸Á¶Ã¼ insa¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ·Î ¼±¾ðÇÒ ¼ö ÀÖ ´Ù. ±×·¯¹Ç·Î ++p¶ó´Â Ç¥ÇöÀ» »ç¿ëÇÏ¸é ±¸Á¶Ã¼ Æ÷ÀÎÅ͸¦ 1¸¸Å­ Áõ°¡½ÃÄÑ i nsaÀÇ Å©±â ¸¸Å­ÀÌ ½ÇÁ¦·Î Áõ°¡µÈ´Ù. ¶ÇÇÑ p+n¹ø° ±¸Á¶Ã¼¸¦ ÂüÁ¶ÇÏ´Â °æ ¿ì¿¡´Â p+nÀ¸·Î Ç¥ÇöÇÑ´Ù. ±¸Á¶Ã¼ Æ÷ÀÎÅÍ º¯¼ö¿¡¼­ ±¸Á¶Ã¼ÀÇ ¸â¹ö¸¦ ÂüÁ¶ÇÒ °æ¿ì¿¡´Â ±¸Á¶Ã¼ ¿¬»êÀÚ '->'¸¦ »ç¿ëÇÏ¿© ´ÙÀ½°ú °°ÀÌ ±â¼úÇÑ´Ù. p -> addr : p°¡ °¡¸®Å°´Â ±¸Á¶Ã¼ÀÇ Ç׸ñ addrÀ» ³ªÅ¸³½´Ù. (p+n) -> name : p+n¹ø° ±¸Á¶Ã¼ÀÇ name Ç׸ñÀ» ³ªÅ¸³½´Ù. ±¸Á¶Ã¼ ¿¬»êÀÚ . ¿Í -> ´Â ¿ì¼±¼øÀ§°¡ °¡Àå ³ô´Ù. ±×·¯¹Ç·Î ¾Æ·¡ µÎ ½ÄÀÇ °á°ú´Â ¼­·Î ´Ù¸£°Ô ÀÛ¿ëÇÑ´Ù. ++p -> addr (++p) -> addr ÀüÀÚÀÇ °æ¿ì¿¡´Â ++(p->addr)·Î Çؼ®µÇ¾î pÀÇ ¸â¹ö addrÀÇ °ªÀ» Çϳª Áõ °¡½ÃŲ´Ù. ±×¸®°í ÈÄÀÚ´Â ´ÙÀ½¹ø ±¸Á¶Ã¼ÀÇ addrÇ׸ñÀ» °¡¸®Å°°Ô µÈ´Ù. ÇÔ¼öÀÇ Àμö¸¦ ÀÌ¿ëÇÏ¿© ±¸Á¶Ã¼¸¦ ÇÔ¼ö·Î Àü´ÞÇÒ °æ¿ì¿¡´Â ±¸Á¶Ã¼ Æ÷ÀÎÅÍ ¸¦ »ç¿ëÇÑ´Ù. ÀÌ ¶§ ÁÖ´Â ÃøÀº ±¸Á¶Ã¼ÀÇ ÁÖ¼Ò¸¦, ¹Þ´Â ÃøÀº ±¸Á¶Ã¼ÀÇ Æ÷ÀÎ Å͸¦ ÀÌ¿ëÇÏ¿© ÁÖ°í ¹Þ°Ô µÈ´Ù. ÀÌ·¸°Ô ÇÔ¼ö¿¡¼­ ±¸Á¶Ã¼ÀÇ ÀÔ·ÂÀ» ¹Þ°í, ´Ù¸¥ ÇÔ¼ö¿¡¼­´Â ±¸Á¶Ã¼ Æ÷ÀÎÅÍ¿¡ ÀÇÇØ Àμö¸¦ Àü´ÞÇÏ´Â °úÁ¤À» ¿¹Á¦·Î Á÷ Á¢ È®ÀÎÇØ º¸ÀÚ. <¿¹Á¦3> <¿¹Á¦1>¿¡¼­ ¼³°èÇÑ ±¸Á¶Ã¼¿¡ »ç¿øÀÇ ÀڷḦ ÇÔ¼ö¿¡¼­ ÀÔ·Â¹Þ¾Æ È­¸é¿¡ Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥ ÀÛ¼º. <¸®½ºÆ®3> #include #include struct insa { /* ±¸Á¶Ã¼ÀÇ Çü½Ä ¼±¾ð */ char name[12]; /* È­ÀÏÀÇ Àü±¸°£¼­ »ç¿ë°¡´É */ char addr[15]; long birth; char tel[9]; }; int input(); /* »ç¿ëÀÚ ÇÔ¼öÀÇ ¼±¾ð */ void display(); main() { struct insa arr[10]; /* ¿·ÀÇ µÎ ¶óÀÎÀ», */ struct insa *p; /* struct insa *p=arr;·Îµµ °¡´É */ int i; p=arr; for (i=0;i <= 10;i++,p++) if (input(p) == 0) break; /* input()ÇÔ¼ö¿¡¼­ 0À» µ¹·ÁÁÖ¸é */ display(arr,i); /* ·çÇÁ Å»Ãâ */ } /* ±¸Á¶Ã¼ '¹è¿­¸í'arrÀº ±× ±¸Á¶Ã¼ÀÇ Ã¹ ÁÖ¼Ò¸¦ ³ªÅ¸³»¹Ç·Î */ /* display(p,i)´ë½Å display(arr,i)µµ °¡´ÉÇÑ Ç¥ÇöÀÓ */ /* »ç½Ç p´Â p++·Î Áõ°¡µÇ¾î ¹ö·ÈÀ¸¹Ç·Î ±¸Á¶Ã¼ÀÇ Ã¹ÁÖ¼Ò¸¦ °¡¸® */ /* Å°Áö ¾Ê´Â´Ù. */ int input(ptr) /* ÀÌ µÎ¶óÀÎÀ», */ struct insa *ptr; /* int input(struct insa *ptr)·Îµµ °¡´É */ { char buff[20]; /* Àӽà ¹®ÀÚ¿­ ÀúÀå ¿µ¿ª È®º¸ */ printf("¼º¸í:"); gets(ptr->name); if (ptr->name[0] == '\0') return(0); /* À̸§À» ÀԷ¾ʰí, ±×³É*/ printf("ÁÖ¼Ò:"); /* ¿£ÅÍÄ¡¸é 0À» µÇµ¹¸®°í ÇÔ¼ö¸¦ Á¾·áÇÑ´Ù. */ gets(ptr->addr); printf("»ý³â¿ùÀÏ(yymmdd):"); gets(buff); /* »ýÀÏÀ» ¹®ÀÚ¿­·Î ÀԷ¹ÞÀº ÈÄ, */ ptr->birth=atol(buff); /* ¹èÁ¤µµ Á¤¼ö·Î º¯È¯½ÃŲ´Ù */ printf("ÀüÈ­¹øÈ£:"); gets(ptr->tel); printf("\n"); return(1); /* Á¤»óÀûÀ¸·Î ÀԷµǸé 1À» µÇµ¹¸°´Ù. */ } void display(s,k) /* ÀÌ ¼¼ÇàÀ» ÇÑÁٷΠǥÇöÇϸé, */ struct insa *s; /* */ int k; /* void display(struct insa *s,int k) */ { int i; printf("==================================================\n"); printf("¹øÈ£ ¼º ¸í ÁÖ ¼Ò »ýÀÏ ÀüÈ­¹øÈ£\n"); printf("==================================================\n"); for (i=0;i <= k;i++) { printf("%2d %-10s%-17s%6ld%10s\n",i+1, s->name, s->addr, s->birth, s->tel); s++; } printf("==================================================\n"); } 5. °ø ¿ë ü (Union) °ø¿ëü´Â ÇϳªÀÇ µ¥ÀÌÅ͸¦ ¿©·¯ °³ÀÇ º¯¼ö°¡ °ø¿ëÇÒ ¼ö ÀÖ°Ô ÇØÁÖ´Â µ¥ÀÌ ÅÍ ÇüÀÌ´Ù. °ø¿ëüÀÇ Á¤ÀÇ ¹æ¹ý°ú ¼±¾ð ¹æ¹ýÀº ±¸Á¶Ã¼¿Í µ¿ÀÏÇÏ´Ù. ´Ü, ±¸ Á¶Ã¼´Â ¸ðµç ÀÚ·á°¡ º°°³ÀÇ ±â¾ïÀå¼Ò¸¦ ¹èÁ¤¹ÞÁö¸¸ °ø¿ëüÀÇ °æ¿ì¿¡´Â °¡ Àå ±ä °ÍÀÇ ÀÚ·á Çü¿¡ ¸ÂÃß¾î ¸Þ¸ð¸®¸¦ ÇÒ´ç¹Þ´Â´Ù. °ø¿ëüÀÇ ¸â¹ö·Î´Â ÁÖ ·Î ±¸Á¶Ã¼¸¦ »ç¿ëÇϸç, °ø¿ëüÀÇ Á¤ÀÇ Çü½ÄÀº ´ÙÀ½°ú °°´Ù. union °ø¿ëü Åà { ¸â¹ö1; ¸â¹ö2; ...; }; <¿¹Á¦4> °ø¿ëüÀÇ »ç¿ë º¸±â <¸®½ºÆ®4> | <¸®½ºÆ®4>ÀÇ °ø¿ëü´Â ¾Æ·¡¿Í °° union abc { | Àº ÇüÅ·Π±â¾ïÀå¼Ò¸¦ ¹èÁ¤ÇÑ´Ù char a; | int b; | | | long c; | +------+ ----+ ---+ }; | | 78 | - a | | main() | +------+ | b | { | | 56 | | | union abc val; | +------+ ----+ | c val.c=(long)0x12345678; | | 34 | | printf("c=%08lx\n", val.c); | +------+ | printf("b=%08x\n", val.b); | | 12 | | printf("a=%08x\n",val.a); | +------+ ---+ } | | | À§ÀÇ ±×¸²°ú °°ÀÌ »óÀ§ ¹ÙÀÌÆ®¿Í ÇÏÀ§ ¹ÙÀÌÆ®°¡ ¹Ù²î¾î ÀúÀåµÇ´Â °ÍÀ» ¿ª ¿öµå Çü½ÄÀ̶ó°í Çϴµ¥ 80x°èÀÇ CPU¿¡¼­´Â ¿ª¿öµå Çü½ÄÀ¸·Î ÀÚ·á°¡ ÀúÀå µÈ´Ù. <¸®½ºÆ®4>³»ÀÇ ÇÁ·Î±×·¥¿¡¼­´Â °¢°¢ÀÇ ¹ÙÀÌÆ®¸¦ µ¶¸³ÀûÀ¸·Î ¾ï¼¼½º ÇÒ ¼ö ¾øÁö¸¸ °ø¿ëüÀÇ ¸â¹ö·Î ±¸Á¶Ã¼¸¦ »ç¿ëÇÏ¸é °¢°¢ÀÇ ¹ÙÀÌÆ®¸¦ °³º°Àû À¸·Î ¾ï¼¼½ºÇÒ ¼ö ÀÖ´Ù. <¿¹Á¦5> °ø¿ëüÀÇ »ç¿ë º¸±â (II) <¸®½ºÆ®5> struct str { | <¸®½ºÆ®5>ÀÇ °ø¿ëü´Â ¾Æ·¡¿Í char c1; | °°Àº ÇüÅ·Π±â¾ïÀå¼Ò¸¦ ¹èÁ¤ char c2; | ÇÑ´Ù. char c3; | char c4; | | | }; | +------+ --+ -----+ --+ union abc { | | 78 | c1| - a | | struct str chr; | +------+ | |b | char a; | | 56 | c2| | | int b; | +------+ | -----+ |c long c; | | 34 | c3|±¸Á¶Ã¼ | }; | +------+ | chr | main() | | 12 | c4| | { | +------+ --+ ---------+ union abc val; | | | val.c=(long)0x12345678; | printf("a=%8lx\n", val.a); | printf("b=%8x\n", val.b); | <¸®½ºÆ®5>¿¡¼­ c3¸¦ °¡¸®Å³ °æ printf("c=%8x\n", val.c); |¿ì¿¡´Â val.chr.c3·Î ±â¼úÇØ¾ß printf("c1=%8x\n",val.chr.c1); |ÇÑ´Ù. ÀÌ°ÍÀº '°ø¿ëü val¿¡ ¼Ó printf("c2=%8x\n",val.chr.c2); |ÇØÀÖ´Â ±¸Á¶Ã¼ chrÀÇ ¸â¹ö c3'¶ó printf("c3=%8x\n",val.chr.c3); |´Â ÀǹÌÀÌ´Ù. ±¸Á¶Ã¼ÀÇ ¿ä¼Ò¸¦ printf("c4=%8x\n",val.chr.c4); |°ø¿ëü·Î ¼±¾ðÇØ µÎ¸é ÀڷḦ Àü } |üÀûÀ¸·Î ÅëÇÕÇÏ¿© ´Ù·ê ¼ö ÀÖ°í °³º°ÀûÀ¸·Îµµ ´Ù·ê ¼ö ÀÖ´Ù. ±¸Á¶Ã¼³ª °ø¿ëü¸¦ ÇÔ¼öÀÇ Àμö·Î »ç¿ëÇÒ ¶§´Â ±¸Á¶Ã¼³ª °ø¿ëüÀÇ ÁÖ¼Ò¸¦ °Ç³»ÁÖ¾î¾ß Çϸç, ¹Þ´Â Ãø¿¡¼­´Â ±×°ÍÀ» Æ÷ÀÎÅÍ·Î ¹Þ¾Æ¿Â´Ù. ¿¹¸¦ µé¾î te st()¶ó´Â ÇÔ¼ö¿¡ <¸®½ºÆ®5>¿¡¼­ Á¤ÀÇÇÑ °ø¿ëü valÀ» Àü´ÞÇÏ·Á¸é ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µÈ´Ù. È£ÃâÃø : test(&val); ... ÇÇÈ£ÃâÃø : void test(union val *abc) { .... test()ÇÔ¼ö¿¡¼­´Â °ø¿ëü valÀ» abc¶ó´Â À̸§À¸·Î »ç¿ëÇÑ´Ù. ±¸Á¶Ã¼¿Í °ø ¿ëüÀÇ È°¿ëÀº Ãʺ¸ÀÚ¿¡°Ô´Â ´Ù¼Ò ¾î·Á¿î °³³äÀ̹ǷΠº¸´Ù ±íÀº ³»¿ëÀº »ý ·«ÇÏ°Ú´Ù.